java 디자인 모드의 구조적 모드 - 장식 모드 ((Decorator))
3032 단어 Decorator
장식 모드
특정 객체를 확장하는 기능
하위 클래스 필요 없음
동적
런타임 지정 책임
하위 클래스로 인한 복잡함과 혼란을 방지하다
유연성 향상
주어진 대상에 대해 서로 다른 장식 대상이 있을 수 있으므로 클라이언트는 필요에 따라 적당한 장식 대상을 선택하여 메시지를 보낼 수 있다.
물려받다
클래스 대상을 확장하는 기능
필요 하위 클래스
정적
편역 시 직책을 분배하다
많은 자류가 생겨나고, 일부 장소에서는 누락된 계층을 보고한다.
유연성 부족
모든 가능한 연합에 대해 고객의 기대는 어떠한 어려움도 증가시키기 쉽다
4. 실례: 사람이 밥을 먹는다.참가자: 1.Component: 대상 인터페이스를 정의하여 이 대상에게 동태적으로 직책(식사)을 추가할 수 있습니다.
public interface Person {
void eat();
}
2. Concrete Component: 대상을 정의하고 이 대상에게 직책을 추가할 수 있다.
public class Man implements Person {
public void eat() {
System.out.println(" ");
}
3. Decorator: Component 대상을 가리키는 바늘을 유지하고 Component 인터페이스와 일치하는 인터페이스를 정의합니다.
public abstract class Decorator implements Person {
protected Person person;
public void setPerson(Person person) {
this.person = person;
}
public void eat() {
person.eat();
}
}
4. ConcreteDecorator에서 어셈블리에 책임을 추가합니다(reEat).
public class ManDecoratorA extends Decorator {
public void eat() {
super.eat();
reEat();
System.out.println("ManDecoratorA ");
}
public void reEat() {
System.out.println(" ");
}
public class ManDecoratorB extends Decorator {
public void eat() {
super.eat();
System.out.println("===============");
System.out.println("ManDecoratorB ");
}
}
테스트 클래스:
public class Test {
public static void main(String[] args) {
Man man = new Man();
ManDecoratorA md1 = new ManDecoratorA();
ManDecoratorB md2 = new ManDecoratorB();
md1.setPerson(man);
md2.setPerson(md1);
md2.eat();
}
}
result 테스트 결과:
ManDecoratorA
===============
ManDecoratorB
참조 자료:
http://www.blogjava.net/chenweicai/archive/2007/03/23/105860.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 장식 모드(Decorator Pattern) 상세 정보 및 실례 코드데코더 모드(Decorator Pattern)는 기존 객체에 새 기능을 추가하고 구조를 변경하지 않습니다.이런 유형의 디자인 모델은 구조형 모델에 속하는데 이것은 기존의 유형으로서의 포장이다. 이런 모델은 기존의 클...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.