• [设计模式]装饰者模式


    前记:最近开始做的项目比较大,其中用到的设计模式比较多,趁这个机会看看书,学习学习,提高自己。看过书后,在这里做个笔记,写些自己的体会。


    装饰者模式,动态的将责任(一个功能对象)附加到(装饰)对象上。比如说,现在有一个窗口类,派生出来很多子窗口,现在希望给这些子窗口添加一个工具栏,如果按传统的做法,在原来的窗口类中添加或者继承原来的窗口类,在新的窗口类中添加,但是这样做对原来的代码修改会很多,因为原来的窗口类已经有了很多派生类,二来工具栏可能以后也会不断的修改,那么对工具栏之外的窗口类也一直修改,因为二者耦合在一起了。装饰者模式的做法,就是将工具栏功能封装成一个类,并且同样继承自原来的窗口类,并且在工具栏类中可以添加新的变量或者方法,甚至重写原来窗口类中的方法,在原来窗口类的方法前/后添加新的功能。

    用装饰者的术语描述一下,就是装饰者和被装饰者有相同的父类,需要被装饰的行为都在父类中;可以用一个或多个装饰者包装一个对象(被装饰者),装饰者中有被装饰者的引用,可以在构造函数中设置;装饰者可以在被装饰的方法前/后添加自己的行为,达到装饰的目的;在用到被装饰者的地方,可以用装饰者替代。

    类图:

     

    参考:《Head First设计模式》

  • 相关阅读:
    还记得吗
    PAT A 1065. A+B and C (64bit) (20)
    畅通project(杭电1863)
    cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第七步---英雄要升级&属性--解析csv配置文件
    热烈祝贺Polymer中文组织站点上线
    具体解释HTML中的window对象和document对象
    oc15--文档安装
    oc14--匿名对象
    oc13--pragma mark
    oc12--对象作为参数
  • 原文地址:https://www.cnblogs.com/belloworld/p/5699772.html
Copyright © 2020-2023  润新知