設計模式-裝飾者模式

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

相關文章
相關標籤/搜索