제1 1 편 디자인 모델 - 조합 모델

정의: 대상 을 트 리 구조 로 조합 하여 '부분 - 전체' 의 차원 구 조 를 나타 내 고 조합 모델 은 사용자 가 하나의 대상 과 조합 대상 에 대한 사용 이 일치 하도록 한다.
코드:
package composite_model;

import java.util.ArrayList;

/**
 * @author naivor
 *		    -   
 */
public class CompositeModel {
	public static void main(String[] args) {
		Component root=new Composite("root");  //     
		root.addComponent(new Leaf("leaf A"));  //      A
		
		Component compositeB=new Composite("composite B");
		root.addComponent(compositeB);	//        B
		compositeB.addComponent(new Leaf("leaf AA"));  //   B   AA
		
		Component componentBB=new Composite("composite BB");
		compositeB.addComponent(componentBB);	//   B     BB
		
		root.operate();
		
	}

}
/**
 * 
 * @author naivor
 *		    -     
 */
abstract class Component {
	private String name;

	public Component() {

	}

	public Component(String name) {
		this.name = name;
	}

	public void addComponent(Component component) {
	};

	public void removeComponent(Component component) {
	};

	public abstract void operate();
}
/**
 * 
 * @author naivor
 *		    -    
 */
class Leaf extends Component {
	public Leaf() {
		
	}
	public Leaf(String name) {
		super(name);
	}
	
	@Override
	public void operate() {
		//        
	}

}
/**
 * 
 * @author naivor
 *		    -    
 */
class Composite extends Component {
	private ArrayList<Component> coms=new ArrayList<Component>();
	
	public Composite() {
		
	}
	public Composite(String name) {
		super(name);
	}
	
	@Override
	public void addComponent(Component component) {
		coms.add(component);
	}
	
	@Override
	public void removeComponent(Component component) {
		coms.remove(component);
	}
	
	@Override
	public void operate() {
		
		for (Component component : coms) {
			component.operate();
		}
		//        
	}
	
}

좋은 웹페이지 즐겨찾기