A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 huyang936 于 2015-3-3 00:35 编辑


装饰设计模式的作用是为了对已有类的功能进行增强,

那么问题来了,


既然是这样,为什么不通过让该类实现一个定义了特定功能的接口来达到此目的呢?


也就是问装饰类存在的意义是什么呢?因为已经有了接口的存在

菜鸟一个,刚接触装饰设计模式,求解释,谢谢!!!

评分

参与人数 1黑马币 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

4 个回复

倒序浏览
实现一个定义了特定接口的功能,只能增强特定的功能,而装饰只需要将被装饰的对象通过构造函数传递进来,就可以提供更强的功能,也可以增强接口中特定的功能。装饰比实现和继承更灵活,可以提供更多的功能,同时还降低了类与类之间的关系。

评分

参与人数 1黑马币 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
同意2楼的最后一句,装饰类而不是接口,目的在于降低类之间的耦合性。

拿Reader和BufferedReader举例。如果BufferedReader是一个接口,Reader通过实现接口来扩展,那么BufferedReader接口的功能变化就势必要改动Reader类中的代码。如果用装饰类实现,BufferedReader无论怎么折腾,都不影响Reader的代码

评分

参与人数 1黑马币 +1 收起 理由
万合天宜 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
fantacyleo 发表于 2015-3-3 01:52
同意2楼的最后一句,装饰类而不是接口,目的在于降低类之间的耦合性。

拿Reader和BufferedReader举例。如 ...

嗯 是这个道理
回复 使用道具 举报
zfgrinm 发表于 2015-3-3 00:38
实现一个定义了特定接口的功能,只能增强特定的功能,而装饰只需要将被装饰的对象通过构造函数传递进来,就 ...

嗯 装饰类更灵活些
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马