装饰模式
//装饰模式
//CopyRight(C) CAnca software Office.2006
//Created by CAnca.
public class DecoratorMode{
public static void main(String[] args){
Component component = new ConcreteComponent();
Decorator decoratorA = new ConcreteDecoratorA();
Decorator decoratorB = new ConcreteDecoratorB();
decoratorA.setComponent(component);
decoratorB.setComponent(decoratorA);
decoratorB.Operation();
//decoratorA.Operation();
}
}
abstract class Component{
abstract void Operation();
}
class ConcreteComponent extends Component{
public void Operation(){
System.out.println("ConcreteComponent.Component()");
}
}
abstract class Decorator extends Component{
protected Component component;
public void setComponent(Component component){
this.component = component;
}
public void Operation(){
if(this.component != null){
component.Operation();
}
}
}
class ConcreteDecoratorA extends Decorator{
private String newState = null;
public void Operation(){
super.Operation();
newState = "New State.";
System.out.println("ConcreteDecoratorA.Operation():" + newState);
}
}
class ConcreteDecoratorB extends Decorator{
public void Operation(){
super.Operation();
newPrint();
}
public void newPrint(){
System.out.println("ConcreteDecoratorB.Operation()");
}
}