자바 디자인 모드 의 조합 모드(Composite)
일종 의 구조 형 모델 로 대상 을 트 리 구조 로 조직 하여'부분-전체'의 차원 구 조 를 나타 내 고 클 라 이언 트 가 하나의 대상 과 조합 대상 에 대한 사용 을 유일 하 게 한다.
UML 도표
위의 아 날로 그 에 포 함 된 캐릭터:
Component:그룹 에 참가 하 는 대상 에 게 공공 인 터 페 이 스 를 설명 합 니 다.조합 이 든 잎 노드 든.
Leaf:조합 에서 잎의 결점 대상 을 나타 내 고 잎의 결점 은 자결 점 이 없다.
Composite:그룹 에 참가 한 하위 대상 의 대상 을 나타 내 고 나 뭇 가 지 를 구축 하 는 행 위 를 말한다.
코드 예제
import java.util.ArrayList;
import java.util.List;
abstract class Component {
protected String name;
public Component(String name) {
this.name = name;
}
public abstract void Add(Component c);
public abstract void Remove(Component c);
public abstract void GetChild(int depth);
}
class Leaf extends Component {
public Leaf(String name) {
super(name);
}
@Override
public void Add(Component c) {
System.out.println("Can not add to a leaf");
}
@Override
public void Remove(Component c) {
System.out.println("Can not remove from a leaf");
}
@Override
public void GetChild(int depth) {
String temp = " ";
for (int i = 0; i < depth; i++) {
temp += "-";
System.out.println(temp + name);
}
}
}
class Composite extends Component {
private List<Component> children = new ArrayList<>();
public Composite(String name) {
super(name);
}
@Override
public void Add(Component c) {
children.add(c);
}
@Override
public void Remove(Component c) {
children.remove(c);
}
@Override
public void GetChild(int depth) {
for (Component c : children) {
c.GetChild(depth);
}
}
}
public class Main {
public static void main(String args[]) {
Composite root = new Composite("root");
root.Add(new Leaf("Leaf A"));
root.Add(new Leaf("Leaf B"));
Composite compX = new Composite("Composite X");
compX.Add(new Leaf("Leaf XA"));
compX.Add(new Leaf("Leaf XB"));
root.Add(compX);
Composite compXY = new Composite("Composite XY");
compXY.Add(new Leaf("Leaf XYA"));
compXY.Add(new Leaf("Leaf XYB"));
compX.Add(compXY);
root.GetChild(3);
}
}
응용 장면1.대상 을 나타 내 는 부분-전체적인 차원 구 조 를 요구한다.
2.클 라 이언 트 가 조합 대상 과 단일 대상 의 차 이 를 무시 하려 면 클 라 이언 트 는 조합 구조의 모든 대상 을 통일 적 으로 사용 합 니 다.
조합 모드 는 Leaf 대상 과 Composite 대상 으로 구 성 된 클래스 구 조 를 정의 합 니 다.
클 라 이언 트 를 간단하게 만 들 기;
하위 위 젯 을 추가 하거나 삭제 하 는 것 이 쉬 워 집 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.