黑马程序员技术交流社区

标题: 关于装饰设计模式和接口的功能区分,求大神解释下!! [打印本页]

作者: huyang936    时间: 2015-3-3 00:30
标题: 关于装饰设计模式和接口的功能区分,求大神解释下!!
本帖最后由 huyang936 于 2015-3-3 00:35 编辑


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

那么问题来了,


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


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

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


作者: zfgrinm    时间: 2015-3-3 00:38
实现一个定义了特定接口的功能,只能增强特定的功能,而装饰只需要将被装饰的对象通过构造函数传递进来,就可以提供更强的功能,也可以增强接口中特定的功能。装饰比实现和继承更灵活,可以提供更多的功能,同时还降低了类与类之间的关系。
作者: fantacyleo    时间: 2015-3-3 01:52
同意2楼的最后一句,装饰类而不是接口,目的在于降低类之间的耦合性。

拿Reader和BufferedReader举例。如果BufferedReader是一个接口,Reader通过实现接口来扩展,那么BufferedReader接口的功能变化就势必要改动Reader类中的代码。如果用装饰类实现,BufferedReader无论怎么折腾,都不影响Reader的代码
作者: huyang936    时间: 2015-3-3 21:39
fantacyleo 发表于 2015-3-3 01:52
同意2楼的最后一句,装饰类而不是接口,目的在于降低类之间的耦合性。

拿Reader和BufferedReader举例。如 ...

嗯 是这个道理
作者: huyang936    时间: 2015-3-3 21:40
zfgrinm 发表于 2015-3-3 00:38
实现一个定义了特定接口的功能,只能增强特定的功能,而装饰只需要将被装饰的对象通过构造函数传递进来,就 ...

嗯 装饰类更灵活些




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