文档查阅说明:
定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活
使用场景:
● 需要扩展一个类的功能,或给一个类增加附加功能;
● 需要动态地给一个对象增加功能,这些功能可以再动态地撤销;
● 需要为一批的兄弟类进行改装或加装功能,当然是首选装饰模式
public abstract class Component {
public abstract void Operation();
}
public class ConCreateComponent extends Component {
@Override
public void Operation() {
System.out.println("具体对象的操作");
}
}
public class Decorator extends Component {
private Component component;
public Component getComponent() {
return component;
}
public void setComponent(Component component) {
this.component = component;
}
@Override
public void Operation() {
if(component != null) {
component.Operation();
}
}
}
public class ConCreateDecoratorA extends Decorator {
private String addedState = "特有的变量";
@Override
public void Operation() {
super.Operation();
System.out.println("具体装饰对象A的操作");
System.out.println(addedState);
}
}
public class ConCreateDecoratorB extends Decorator {
@Override
public void Operation() {
super.Operation();
System.out.println("具体装饰对象B的操作");
AddedBehavior();
}
private void AddedBehavior() {
System.out.println("独有的方法!!");
}
}
public class Test {
public static void main(String[] args) {
ConCreateComponent con = new ConCreateComponent();
ConCreateDecoratorA decA = new ConCreateDecoratorA();
ConCreateDecoratorB decB = new ConCreateDecoratorB();
decA.setComponent(con);
decB.setComponent(decA);
decB.Operation();
}
}