개요
트리 구조에서 객체를 구성하여 "부분적인"계층 구조를 나타내는 구조적 패턴으로, 개별 객체와 결합 된 객체를 사용하는 데있어 클라이언트를 독특하게 만듭니다.
UML 클래스 다이어그램
위의 클래스 다이어그램에는 역할이 포함되어 있습니다.
구성 요소 : 조합이든 잎 노드이든 구성에 참여하는 객체에 대한 공통 인터페이스를 선언합니다.
잎 : 조합의 잎 노드 객체를 나타내고 잎 노드에는 하위 노드가 없습니다.
합성물 : 조합에 참여하는 어린이 물체가있는 객체를 나타내고 지점 구성의 동작을 제공합니다.
코드 예제
import java.util.arraylist; import java.util.list; Abstract 클래스 구성 요소 {보호 문자열 이름; 공개 구성 요소 (문자열 이름) {this.name = 이름; } 공개 초록 void Add (구성 요소 C); 공개 초록 void 제거 (구성 요소 C); 공개 초록 void getchild (int 깊이);} 클래스 리프 확장 구성 요소 {public Leaf (문자열 이름) {super (name); } @override public void add (component c) {system.out.println ( "잎에 추가 할 수 없음"); } @override public void remove (component c) {system.out.println ( "잎에서 제거 할 수 없음"); } @override public void getchild (int 깊이) {String temp = ""; for (int i = 0; i <깊이; i ++) {temp+= "-"; System.out.println (temp + name); }}} 클래스 composite 확장 component {private list <component> children = new arraylist <> (); 공개 복합 (문자열 이름) {super (이름); } @override public void add (구성 요소 c) {children.add (c); } @override public void remove (구성 요소 c) {children.remove (c); } @override public void getchild (int 깊이) {for (구성 요소 C : children) {c.getchild (깊이); }}} public class main {public static void main (String args []) {composite root = new Composite ( "root"); root.add (새 잎 ( "잎 A"); root.add (새 잎 ( "잎 B"); composite compx = 새로운 합성물 ( "composite x"); compx.add (새 잎 ( "잎 xa")); compx.add (새 잎 ( "잎 xb")); root.add (compx); composite compxy = 새로운 합성물 ( "composite xy"); compxy.add (새 잎 ( "잎 xya")); compxy.add (새 잎 ( "잎 xyb")); compx.add (compxy); root.getchild (3); }}응용 프로그램 시나리오
1. 객체의 부품 간 계층 구조가 필요합니다.
2. 클라이언트가 클라이언트가 결합 된 객체와 단일 객체의 차이를 무시하기를 원하는 경우 클라이언트는 결합 된 구조의 모든 객체를 균일하게 사용합니다.
조합 패턴은 잎 물체와 복합 물체로 구성된 클래스 구조를 정의합니다.
고객을 단순하게 만드십시오.
하위 부분을 쉽게 추가하거나 제거 할 수 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.