Java 디자인 모드 -- 콤보 모드(Composit)
2250 단어 java 디자인 모드조합 모드Leafcomposit
조합 모델은 합성 모델이라고도 부르고 때로는 부분-전체 모델이라고도 부르는데 주로 부분과 전체의 관계를 묘사하는 데 쓰인다.
정의: 객체를 트리 구조로 그룹화하여 "부분-전체"의 계층 구조를 보여줌으로써 단일 객체에 대한 사용자 사용의 일관성을 유지합니다.
2. 조합 모드의 3개 객체:
a. Component 추상 위젯 역할
조합 대상에 참가하는 공유된 속성과 방법을 정의하고 기본적인 행위나 속성을 정의할 수 있습니다
b. Leaf 리프 위젯
잎사귀 의 대상 은 그 아래 에 더 이상 분지 가 없더라도, 두루 다니는 가장 작은 단위 이다
c. Composit 나뭇가지 부재
나뭇가지 대상, 작용은 나뭇가지 부재와 나뭇잎 부재를 조합하여 나무 구조를 형성하는 것이다
3. 조합 모드 일반 예제 코드:
Component 클래스:
public abstract class Component {
//
public void doSomething(){
System.out.println(" ...");
}
}
NewLeaf 잎 위젯 클래스:public class NewLeaf extends Component {
@Override
public void doSomething() {
super.doSomething();
System.out.println(" .");
}
}
Composit 나뭇가지 부재 클래스public class Composit extends Component {
//
private ArrayList<Component> list=new ArrayList<Component>();
//
public void add(Component com){
this.list.add(com);
}
//
public void remove(Component com){
this.list.remove(com);
}
//
public ArrayList<Component> getChildren(){
return this.list;
}
}
테스트 코드:public class Test {
public static void main(String[] args) {
//
Composit root=new Composit();
root.doSomething();
//
Composit branch=new Composit();
//
NewLeaf leaf=new NewLeaf();
root.add(branch);
branch.add(leaf);
display(root);
}
public static void display(Composit root){
for (Component it : root.getChildren()) {
if(it instanceof NewLeaf){
it.doSomething();
}else{
display((Composit)it);
}
}
}
}
4. 조합 모드의 이점:a. 고층 모듈 호출 간단
한 그루의 나무의 모든 노드는Component로 부분과 전체는 호출자에게 차이가 없다. 즉, 고위층은 하나의 대상을 처리하는지 조합 구조를 처리하는지 신경 쓰지 않고 고위층 모듈의 코드를 간소화했다.
b. 노드 자유 증가
나뭇가지 노드나 나뭇잎 노드를 늘리려면 아버지 노드를 찾으면 된다.매우 쉽게 확장되고 개폐 원칙에 부합된다.
5. 조합 모드의 단점:
테스트 클래스에서 알 수 있듯이 나뭇잎과 나뭇가지의 정의를 사용할 때 실현 클래스를 직접 사용했고 인터페이스가 아니라 의존 역치 원칙과 충돌했다!
6. 조합 모드의 사용 장면:
a. 유지 관리 섹션 - 트리 메뉴, 파일 및 폴더 처리와 같은 관계식의 전체 장면
b. 하나의 전체에서 일부 모듈과 기능을 독립할 수 있는 장면
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
어댑터(클래스 어댑터, 객체 어댑터 모드)1: 클래스 어댑터 모드 만일 우리가 Person류가 있다면, 이 Person류에는 불고 당기는 방법이 있다.시스템 개발의 절반에 이르러 우리는 이 종류에 두 가지 방법을 더 첨가하여 연주, 당기기, 연주, 노래의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.