黑马程序员技术交流社区

标题: 装饰设计模式,今天听的太含糊了,都蒙了 [打印本页]

作者: 我只适合被遗忘    时间: 2015-4-10 17:58
标题: 装饰设计模式,今天听的太含糊了,都蒙了
举个好点的例子说,一定要详细。没见解的不要。

作者: Mra    时间: 2015-4-10 17:58
学过StringBuffer吧,StringBuffer使用在创建对象的时候你是咋做的啊?
这样StringBuffer sb=new StringBuffer(new FileWriter(file));
这里的StringBuffer不是就是一个装饰类么?原来的FileWriter没有缓冲功能,装饰后有了。
我们上课的例子:
public interface Phone {
        public abstract void call();
}

public class PhoneImpl implements Phone {

        @Override
        public void call() {
                System.out.println("用手机打电话");
        }

}

public abstract class PhoneDecorate implements Phone {

        private Phone phone;

        public PhoneDecorate(Phone phone) {
                this.phone = phone;
        }

        @Override
        public void call() {
                this.phone.call();
        }
}

public class ColorPhoneDecorate extends PhoneDecorate {

        public ColorPhoneDecorate(Phone phone) {
                super(phone);
        }

        @Override
        public void call() {
                System.out.println("播放彩铃");
                super.call();
        }
}

public class GuangGaoPhoneDecorate extends PhoneDecorate {

        public GuangGaoPhoneDecorate(Phone phone) {
                super(phone);
        }

        @Override
        public void call() {
                super.call();
                System.out.println("播放广告");
        }
}

public class PhoneTest {
        public static void main(String[] args) {
                Phone p = new PhoneImpl();
                p.call();
                System.out.println("---------------");

                PhoneDecorate pd = new ColorPhoneDecorate(p);
                pd.call();
                System.out.println("---------------");

                pd = new GuangGaoPhoneDecorate(p);
                pd.call();
                System.out.println("---------------");

ColorPhoneDecorate cc =new ColorPhoneDecorate(p);
                pd = new GuangGaoPhoneDecorate(cc);
                pd.call();
        }

说直白点,装饰类就是接收对象,添加功能。这个例子里面就是装饰类在哪儿放着,你要装饰啥,扔进去,
装好了new装饰类,新的就出来了。ok
}
作者: 我只适合被遗忘    时间: 2015-4-10 18:00
浑水摸鱼的不要来
作者: ziqingjie    时间: 2015-4-14 22:06
小手一抖,积分到手
作者: wk843620202    时间: 2015-4-19 11:29
BufferedReader,BufferedWriter就是个例子




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