设计模式:装饰模式
?
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;//具体装饰角色1public 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;//具体装饰角色2public 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最重要的是深刻理解装饰模式!