黑马程序员技术交流社区

标题: java怎么实现装饰者模式。 [打印本页]

作者: 0小菜鸟0    时间: 2014-7-19 22:02
标题: java怎么实现装饰者模式。
本帖最后由 0小菜鸟0 于 2014-7-20 21:07 编辑

我知道java中的IO流,用了装饰者模式,但是我想自己用改怎么写呢?谁能写个demo,并简单讲解一下
作者: 不可言    时间: 2014-7-19 22:26
坐等楼下解答
作者: SyouRai_Tsk    时间: 2014-7-19 23:23
编写一个类,实现与被包装类相同的接口
定义一个变量,记住被包装对象的引用
定义构造方法,注入被包装对象的引用
对于要改写的方法,写你的代码
对于不需要改写的方法,调用原有对象的对应方法
以下的例子是为readLine这个方法添加行号的例子
public class MyBufferedReader extends BufferedReader{
        private int count = 1;
        public MyBufferedReader(BufferedReader br){
                super(br);
        }
        //先拿到原有对象的对应方法,判断其返回值后再进行包装
        public String readLine() throws IOException {
                String data = super.readLine();
                if(data==null)
                        return data;
                return count+++data;
        }
       
}
作者: star5603    时间: 2014-7-19 23:31
public class Person {
        void eat(){
                System.out.println("吃饭");
        }
}

public class NewPerson{
        private Person p;
        public NewPerson(Person p) {
                this.p = p;
        }
        void eat(){
                System.out.println("开胃菜");
                p.eat();
                System.out.println("吃菜");
        }
}

继承多了,会导致继承体系臃肿,不够灵活。
继承的想法是让缓冲区和具体的对象进行结合。装饰设计模式是将缓冲进行单独的封装,与要缓冲的对象关联。

笔记内容,希望有所帮助,可以一起探讨。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2