日期:2014-05-20  浏览次数:20659 次

什么是java装饰设计模式
我在看孙鑫java视频教程时,遇到这样一个名词,很难理解,大家看看是什么意思!

------解决方案--------------------
设计模式 - 装饰者模式(Decorate )
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorate 模式相比生成子类更为灵活。

在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
处理那些可以撤消的职责。
当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。 

实质就是 Wrapper. 一层一层的封装。可以封装任意层。
------解决方案--------------------
装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

装饰模式的特点;
(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。
(2) 装饰对象包含一个真实对象的索引(reference)
(3) 装饰对象接受所有的来自客户端的请求。它把这些请求转发给真实的对象。
(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。

------解决方案--------------------
更多情况下
楼主可以问一下baidu
------解决方案--------------------
在 IO 包中用到了大量的装饰器模式,所以我们就可以这样用:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));

也就是一层一层地添加些功能,节省点类。

我们就不用写 BufferedInputStreamReader 这种类了。如果这样做的话,每种样子都来一个,
类会多得吃不消的,呵呵。
------解决方案--------------------
百度最清楚,呵呵
------解决方案--------------------
探讨
在 IO 包中用到了大量的装饰器模式,所以我们就可以这样用:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(...)));

也就是一层一层地添加些功能,节省点类。

我们就不用写 BufferedInputStreamReader 这种类了。如果这样做的话,每种样子都来一个,
类会多得吃不消的,呵呵。

------解决方案--------------------
问百度也不可能很清楚,最好是找本设计模式的书,并且Decorate设计模式并非java的。

推荐书籍:GOF 《设计模式》
《设计模式解析》
《大话设计模式》 ----这个是中国人的,评价还可以
《Thinking in patterns》
《java与模式》

想很快的了解可以去下载23个设计模式的电子书,还附示例代码,迅雷搜狗有。
------解决方案--------------------
顶下!可以多看看IO!
模式是随着开发经验的积累然后逐渐认识到的!
------解决方案--------------------
装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
------解决方案--------------------
探讨
问百度也不可能很清楚,最好是找本设计模式的书,并且Decorate设计模式并非java的。

推荐书籍:GOF 《设计模式》
《设计模式解析》
《大话设计模式》 ----这个是中国人的,评价还可以
《Thinking in patterns》
《java与模式》

想很快的了解可以去下载23个设计模式的电子书,还附示例代码,迅雷搜狗有。