装饰者模式(decorater),顾名思义.就是在原有的基础上,再进行一层包装java
JDK中的io就是用此模式.InputStreamReader包装了InputStram。ide
由于全部的IO流最终走的都是字节流.而字符集直接操做封装好了的字节流那就能够提升效率this
设个场景吧,咱们去一点点买奶茶,品类繁多.珍珠奶茶、茉香奶茶、抹茶奶茶、奥利奥奶茶code
public interface MilkyTeaI { /** * 开始制做 */ void excute(); }
public class MilkyTea implements MilkyTeaI{ @Override public void excute() { System.out.println("制做奶茶成功"); } }
public class MochaMilkyTea implements MilkyTeaI{ private MilkyTeaI milkyTeaI; public MochaMilkyTea(MilkyTeaI milkyTeaI) { this.milkyTeaI = milkyTeaI; } @Override public void excute() { milkyTeaI.excute(); System.out.println("添加抹茶成功"); } }
public class MochaZhenzhuMilkyTea implements MilkyTeaI{ private MilkyTeaI milkyTeaI; public MochaZhenzhuMilkyTea(MilkyTeaI milkyTeaI) { this.milkyTeaI = milkyTeaI; } @Override public void excute() { milkyTeaI.excute(); System.out.println("添加珍珠成功"); } }
public class Demo { public static void main(String[] args) { MilkyTeaI milkyTeaI = new MochaMilkyTea(new MilkyTea()); milkyTeaI.excute(); } }
控制台console:io
制做奶茶成功
添加抹茶成功console