보관물

Posts Tagged ‘Decorator’

Decorator pattern

2월 24, 2011 댓글 남기기

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()”;

}

}