设计模式学习之装饰模式
?1.名词解释:
装饰模式:动态的给一个对象添加一个额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式是为已有功能动态地添加更多功能的一种方式。
?
2.代码示例:
组件类:package DesignPattern.DecoratorPattern;public abstract class Component {public abstract void operation();}?
具体的对象接口类package DesignPattern.DecoratorPattern;public class ConcreateComponent extends Component {@Overridepublic void operation() {// TODO Auto-generated method stubSystem.out.println("ConcreateComponent.operation is process...");}}?
装饰类:package DesignPattern.DecoratorPattern;public class Decorator extends Component{ protected Component component;public void setComponent(Component component) {this.component = component;}@Overridepublic void operation() {// TODO Auto-generated method stubif(this.component != null) {component.operation();}}}?
package DesignPattern.DecoratorPattern;public class ConcreateDecoratorA extends Decorator{public void operation() {super.operation();System.out.println("ConcreateDecoratorA.operation is process...");}}package DesignPattern.DecoratorPattern;public class ConcreateDecoratorB extends Decorator{public void operation() {super.operation();this.addBehavior();System.out.println("ConcreateDecoratorB.operation is process...");}private void addBehavior() {System.out.println("ConcreateDecoratorB.addBehavior is process...");}}?
主控程序类:package DesignPattern.DecoratorPattern;public class Client {public static void main(String[] args) {ConcreateComponent c = new ConcreateComponent();ConcreateDecoratorA d1 = new ConcreateDecoratorA();ConcreateDecoratorB d2 = new ConcreateDecoratorB();d1.setComponent(c);d2.setComponent(d1);d2.operation();}}?