JavaSE(16)(装饰者设计模式)

装饰者设计模式:
package zz.itheima.decorator;

public class DecoratorPattern {

    public static void main(String[] args) {
        //装饰者设计模式
    /* 1.FileWriter本身有8k的缓冲区,那也可以提供一个方法能够修改缓冲区的大小 2.我想加强一个类的功能?怎么办最好? a.修改类的源代码 弊端:兼容性不好 b.继承 弊端:比较臃肿 c.完全新建一个类,替换原来的类 弊端:相似或相同的方法又要重新实现 d.装饰者设计模式 class BufferWriter{ //缓冲区很大 //有方法可以灵活设置缓冲区的大小 int size; //有个属性FileWriter fw; public BufferWriter(FileWriter fw,int size) { this.fw=fw; this.size=size; } public int read() { fw.read(); } }*/
    }

}
Person类:
package zz.itheima.decorator;

public class Person {
    public void eat(){
        System.out.println("直接吃!");
    }
}
NewPerson类:
package zz.itheima.decorator;

public class NewPerson {

    private Person p;
    public NewPerson(Person p){
        this.p = p;
    }
    public void eat(){
        System.out.println("先洗手!");
        p.eat();
    }

}
NewNewPerson类:
package zz.itheima.decorator;

public class NewNewPerson {

    private  NewPerson np;
    public NewNewPerson(NewPerson np){
        this.np = np;
    }
    public void eat(){
        np.eat();
        System.out.println("洗碗!");
    }
}
TestPerson类:
package zz.itheima.decorator;

public class TestPerson {
    //装饰者设计模式
    public static void main(String[] args) {
        NewNewPerson nnp = new NewNewPerson(new NewPerson(new Person()));
        nnp.eat();
    }
}
执行结果:
先洗手!
直接吃!
洗碗!

你可能感兴趣的:(设计模式,装饰者设计模式)