디자인 모드 노트 의 4 장식 모드

2399 단어 디자인 모드UML

장식 모드 정의: 동적 으로 책임 을 대상 에 추가 합 니 다.기능 을 넓 히 려 면 장식 자 는 계승 보다 탄력 있 는 대체 방안 을 제공 했다.
 
UML 그림 (약)
 
/**
 *       
 */
public interface Composite {

	public void methodA();
	public void methodB();
	
}

/**
 *      
 */
public class ContreteComposite implements Composite {

	@Override
	public void methodA() {
		
		System.out.println("ContreteDecorator methodA");
	}

	@Override
	public void methodB() {
		
		System.out.println("ContreteDecorator methodB");
	}
	
}

/**
 *      1
 */
public class ConcreteDecorator1 implements Composite {

	private Composite composite;
	
	public ConcreteDecorator1(Composite composite) {
		
		this.composite = composite;
	}
	
	@Override
	public void methodA() {
		
		//        
		System.out.println("ConcreteDecorator1 methodA");
		
		//             
		composite.methodA();
	}

	@Override
	public void methodB() {
		
		//        
		System.out.println("ConcreteDecorator1 methodB");
		
		//             
		composite.methodB();
	}
	
}

/**
 *      2
 */
public class ConcreteDecorator2 implements Composite {

	private Composite composite;
	
	public ConcreteDecorator2(Composite composite) {
		
		this.composite = composite;
	}
	
	@Override
	public void methodA() {
		
		//        
		System.out.println("ConcreteDecorator2 methodA");
		
		//             
		composite.methodA();
	}

	@Override
	public void methodB() {
		
		//        
		System.out.println("ConcreteDecorator2 methodB");
		
		//             
		composite.methodB();
	}
	
}

/**
 *         
 */
public class TestDecorator {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Composite composite = new ConcreteDecorator2(new ConcreteDecorator1(new ContreteComposite()));
		composite.methodA();
		composite.methodB();
	}

}

좋은 웹페이지 즐겨찾기