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

来源:互联网 发布:产品宣传手册制作软件 编辑:程序博客网 时间:2024/05/01 11:44
装饰者设计模式: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();    }}执行结果:先洗手!直接吃!洗碗!
0 0
原创粉丝点击