设计模式:装饰模式

xiaoxiao2021-03-01  21

 

JAVA 的IO模块如果不使用装饰模式,会需要更多的IO类,如带缓冲的并能读取基本类型的类、读取字节数组的缓冲类等等。

 

package com.test.decrator; //抽象构件角色 public interface Component { public void dosometing(); }

 

package com.test.decrator; //具体构件角色 public class ConcreteComponent implements Component { public void dosometing() { System.out.println("功能A"); } }

 

package com.test.decrator; //装饰角色 public class Decorator implements Component { private Component component; public Decorator(Component component){ this.component = component; } public void dosometing() { component.dosometing(); } }

 

package com.test.decrator; //具体装饰角色1 public class ConcreteDecorator1 extends Decorator { public ConcreteDecorator1(Component component) { super(component); } public void dosometing() { super.dosometing(); this.doAnotherthing(); } private void doAnotherthing(){ System.out.println("功能B"); } }

 

package com.test.decrator; //具体装饰角色2 public class ConcreteDecorator2 extends Decorator { public ConcreteDecorator2(Component component) { super(component); } public void dosometing() { super.dosometing(); this.doAnotherthing(); } private void doAnotherthing() { System.out.println("功能C"); } }

 

package com.test.decrator; public class Client { public static void main(String[] args) { //节点流 Component component = new ConcreteComponent(); //过滤流 Component component2 =new ConcreteDecorator1(component); //过滤流 Component component3 =new ConcreteDecorator2(component2); component3.dosometing(); } }

 

 

打印出

功能A功能B功能C

 

学IO最重要的是深刻理解装饰模式!

转载请注明原文地址: https://www.6miu.com/read-3849924.html

最新回复(0)