文檔查閱說明:
定義:動態地給一個對象添加一些額外的職責。就增加功能來說,裝飾模式相比生成子類更爲靈活
使用場景:
● 需要擴展一個類的功能,或給一個類增加附加功能;
● 需要動態地給一個對象增加功能,這些功能可以再動態地撤銷;
● 需要爲一批的兄弟類進行改裝或加裝功能,當然是首選裝飾模式
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();
}
}