黑马程序员技术交流社区
标题:
装饰设计模式
[打印本页]
作者:
moonlight
时间:
2011-11-18 16:47
标题:
装饰设计模式
本帖最后由 moonlight 于 2011-11-20 17:20 编辑
谁能用通俗的语言解释一下什么叫装饰设计模式啊,最好举一个例子,谢谢了
作者:
小王同志
时间:
2011-11-18 16:53
本帖最后由 潜王伟 于 2011-11-18 16:55 编辑
装饰设计模式就是把一个类进行包装,使这个类具有更大的功能。
装饰设计模式的特点:
1,含有一个包装类的引用。
2,通过构造函数进行装配。
3,含有和被包装类同样的方法,方法中调用被包装类的方法(以此对其进行增强);
4,可以实现或继承被包装类的接口或父类,可以当作被包装的类使用。
以下是一个装饰设计模式的例子:
class Person{
public void eat(){
System.out.println("吃饭");
}
}
class SuperPerson{
private Person p;
SuperPerson(Person p){
this.p = p;
}
public void superEat(){
System.out.println("开胃菜");
p.eat();
System.out.println("KFO");
System.out.println("抽烟");
}
}
作者:
laoyang
时间:
2011-11-18 17:04
在 IO 包中用到了大量的装饰器模式,所以我们就可以这样用:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));
也就是一层一层地添加些功能,节省点类。
我们就不用写 BufferedInputStreamReader 这种类了。如果这样做的话,每种样子都来一个,
类会多得吃不消的
作者:
赵磊5
时间:
2011-11-18 17:12
装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
装饰模式的特点;
(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。
(2) 装饰对象包含一个真实对象的索引(reference)
(3) 装饰对象接受所有的来自客户端的请求。它把这些请求转发给真实的对象。
(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。
总的来说就是一层一层的包装,同时加上了新的东西。
作者:
徐杨
时间:
2011-11-18 19:32
装饰设计模式简单的来说
就是动态的为对象添加一些功能
当对类的功能进行增强时,可称之为对该类的装饰。
同时它的出现具备灵活性。
装饰和继承。
装饰设计模式是一种解决某一类问题的思想。该类问题的有效解决方案。
解决给类提供增强型功能的问题。
继承:是面向对象的特征之一。
作者:
moonlight
时间:
2011-11-18 19:48
谢谢各位!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2