黑马程序员技术交流社区
标题:
装饰设计模式,今天听的太含糊了,都蒙了
[打印本页]
作者:
我只适合被遗忘
时间:
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