《大话设计模式》读书笔记-第6章 装饰模式

1.装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

2.装饰模式(decorator)结构图

       

        Component是定义一个对象的接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator的存在的。至于ConcreteDecorator就是具体的装饰对象,起到给Component添加职责的功能。

3.使用模式时要善于变通,如果只有一个ConcreteComponent类而没有抽象的Component类,那么Decorator类可以是ConcreteComponent的一个子类。同样道理,如果只有一个ConcreteDecorator类,那么就没有必要建立一个单独的Decorator类,而可以吧Decorator和ConcreteDecorator的责任合并成一个类。

3.装饰模式的优点:把类中的装饰功能从类中搬移去除,这样可以简化原有的类;有效地把类的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑。

4.值得注意的是,装饰模式的装饰顺序很重要,比如加密数据和过滤词汇都可以是数据持久化前的装饰功能,但若先加密了数据再用过滤功能就会出问题了,最理想的情况是保证装饰类之间彼此独立,这样它们就可以以任意的顺序进行组合了。

posted on 2012-02-21 20:49  qinzj  阅读(177)  评论(0编辑  收藏  举报