裝飾者模式(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