`
gatusso52
  • 浏览: 109808 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

装饰模式

 
阅读更多

1 解决问题:

一个基本的类,现在我想让它在创建的时候添加一些额外的边缘功能

一个思路是修改基类,但这样不好,一方面额外功能赋予基类不合适(单一职责),另一方面修改的话也不好改

于是采取另一种方式,动态的一层一层“包装”这个基类


2 解决方法:

一个统一的接口Component,抽取了基类本该做的事情oper()

原来的基类ConcreatComponent,做自己该做的事情(固有的类)、

一个Decorator类,是所有修饰类的父类,它实现Component接口,同时里面传入一个ConcreatComponent元素

若干ConcreatDecorator子类,继承Decorator,在oper中添加功能

【具体实现感觉有点像代理模式】


3 理解

感觉与代理模式有点像,其实我现在不能很好的区分这两个

感觉好像区别在于

装饰模式是在不改变接口的情况下,动态的扩展类的功能

代理模式是在不改变接口的情况下,取得别的对象的控制权

装饰模式是在创建一个类的时候动态添加功能

而代理模式则是在实现某个功能过程中动态添加功能

代理模式只是原来对象的一个替身,装饰模式是对原对象的功能增强,适配器模式是要改变原对象的接口

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics