Decorator pattern
Decorator pattern
객체에 추가적인 요건을 동적으로 첨가한다.
데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다.
생성된 ConcreteComponent를 ConcreteDecorator로 감싸는 형식으로 사용된다.
ConcreteDecorator는 또 다른 혹은 같은 ConcreteDecorator로 감싸질 수 있다.
Diagram
Source
Component.java
public abstract class Component {
String varA = “Nothing”;
public String methodA() {
return varA;
}
public abstract String methodB();
}
ConcreteComponent.java
public class ConcreteComponent extends Component {
public ConcreteComponent() {
varA = “ConcreteComponent”;
}
public String methodB() {
return “ConcreteComponent’s methodB()”;
}
}
Decorator.java
public abstract class Decorator extends Component {
public abstract String methodB();
}
ConcreteDecorator.java
public class ConcreteDecorator extends Decorator {
Component component;
public ConcreteDecorator(Component m_Component) {
component = m_Component;
}
public String methodA() {
return component.methodA() + “ConcreteDecorator’s methodA()”;
}
public String methodB() {
return component.methodB() + “ConcreteDecorator’s methodB()”;
}
public String methodC() {
return “Decorator’s new methodC()”;
}
}