제9 편 디자인 모델 - 장식 모델

정의: 대상 에 게 동적 으로 추가 적 인 직책 을 추가 합 니 다.기능 을 증가 시 키 는 데 있어 장식 모델 은 하위 클래스 를 생 성 하 는 것 보다 더욱 유연 하 다.
코드:
package decorator_model;

/**
 * @author naivor
 *		    -   
 */
public class DecoratorModel {
	public static void main(String [] args){
		ConcreteComponent component=new ConcreteComponent();
		FunctionA functionA=new FunctionA();
		FunctionB functionB=new FunctionB();
		
		functionA.setComponent(component);	// component      A B
		functionB.setComponent(functionA);	
		
		functionB.operate();		
	}
}
/**
 * 
 * @author naivor
 *		    -     
 */
abstract class Component{
	public abstract void operate();
}
/**
 * 
 * @author naivor
 *		    -     
 */
class ConcreteComponent extends Component{

	@Override
	public void operate() {
		//         
	}
	
}
/**
 * 
 * @author naivor
 *		    -    
 */
class Decorator extends ConcreteComponent{
	private ConcreteComponent component;
	
	public Decorator() {
		
	}
	public void setComponent(ConcreteComponent component) {
		this.component=component;
	}
	
	@Override
	public void operate() {
		if (component!=null) {
			component.operate();
		}
	}
}
/**
 * 
 * @author naivor
 *		    -    A 
 */
class FunctionA extends Decorator{
	@Override
	public void operate() {
		super.operate();
		addFunctionA();
	}
	
	private void addFunctionA(){
		//       A
	}
}
/**
 * 
 * @author naivor
 *		    -    B 
 */
class FunctionB extends Decorator{
	@Override
	public void operate() {
		super.operate();
		addFunctionB();
	}
	
	private void addFunctionB(){
		//       B
	}
}

좋은 웹페이지 즐겨찾기