디자인 모델 - 구조 형 - 조합 모델

3166 단어 디자인 모드
조합 모드
대상 을 트 리 구조 로 조합 하여 '전체 / 부분' 차원 구 조 를 표현 할 수 있 도록 합 니 다.조합 은 고객 으로 하여 금 일치 하 는 방식 으로 개별 대상 과 대상 조합 을 처리 하 게 할 수 있다.
package com.componentpattern;

import java.util.ArrayList;
import java.util.List;

public abstract class Component {

	private String componentname;

	public String getComponentname() {
		return componentname;
	}

	public void setComponentname(String componentname) {
		this.componentname = componentname;
	}

	public abstract void add(Component component);

	public abstract void remove(Component component);

	public void getInfo() {
		System.out.println(this.getComponentname());
	}

	public  List<Component> components = new ArrayList<Component>();

	public List getComponents() {
		return components;
	}

}
package com.componentpattern;

public class ComponentOne extends Component {

	public ComponentOne(String componentname) {
		this.setComponentname(componentname);
		this.components = null;//    
	}

	@Override
	public void add(Component component) {
	}

	@Override
	public void remove(Component component) {
	}

}
package com.componentpattern;

public class ComponentTwo extends Component {

	public ComponentTwo(String componentname) {
		this.setComponentname(componentname);
		this.components = null;   //    
	}

	public void add(Component component) {
		// TODO Auto-generated method stub
	}

	public void remove(Component component) {
		// TODO Auto-generated method stub
	}
}
package com.componentpattern;

public class ComponentThree extends Component {

	public ComponentThree(String componentname) {
		this.setComponentname(componentname);
	}

	@Override
	public void add(Component component) {
		// TODO Auto-generated method stub
		this.components.add(component);
	}

	@Override
	public void remove(Component component) {
		// TODO Auto-generated method stub
		this.components.remove(component);
	}

}
package com.componentpattern;

import java.util.List;

public class Test {

	public static void main(String[] args) {
		ComponentOne one = new ComponentOne("one");
		ComponentTwo two = new ComponentTwo("two");
		ComponentThree three = new ComponentThree("three");

		three.add(one);
		three.add(two);

		one.getInfo();
		two.getInfo();
		three.getInfo();
		List<Component> list = three.getComponents();
		for (Component c : list) {
			c.getInfo();
		}

	}

}

출력 결과:
one
two
three
one
two

좋은 웹페이지 즐겨찾기