读书人

设计方式笔记之四 装饰模式

发布时间: 2012-08-24 10:00:20 作者: rapoo

设计模式笔记之四 装饰模式

?

/** * 被装饰者接口 */public interface Composite {public void methodA();public void methodB();}/** * 被装饰对象 */public class ContreteComposite implements Composite {@Overridepublic void methodA() {System.out.println("ContreteDecorator methodA");}@Overridepublic void methodB() {System.out.println("ContreteDecorator methodB");}}/** * 具体装饰者1 */public class ConcreteDecorator1 implements Composite {private Composite composite;public ConcreteDecorator1(Composite composite) {this.composite = composite;}@Overridepublic void methodA() {//这里实现装饰功能System.out.println("ConcreteDecorator1 methodA");//这里调用被装饰者的原来功能composite.methodA();}@Overridepublic void methodB() {//这里实现装饰功能System.out.println("ConcreteDecorator1 methodB");//这里调用被装饰者的原来功能composite.methodB();}}/** * 具体装饰者2 */public class ConcreteDecorator2 implements Composite {private Composite composite;public ConcreteDecorator2(Composite composite) {this.composite = composite;}@Overridepublic void methodA() {//这里实现装饰功能System.out.println("ConcreteDecorator2 methodA");//这里调用被装饰者的原来功能composite.methodA();}@Overridepublic void methodB() {//这里实现装饰功能System.out.println("ConcreteDecorator2 methodB");//这里调用被装饰者的原来功能composite.methodB();}}/** * 装饰者模式的使用 */public class TestDecorator {/** * @param args */public static void main(String[] args) {Composite composite = new ConcreteDecorator2(new ConcreteDecorator1(new ContreteComposite()));composite.methodA();composite.methodB();}}

读书人网 >软件开发

热点推荐