三. 行为型模式
20. Observer(观察者模式)
意图: 定义对象间的一种一对多的依赖关系, 当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新.
结构:
图22
说明: 文档视图就是用这个模式.
http://blog.csdn.net/bagboy_taobao_com/article/details/12853151
21. State(状态模式)
意图: 允许一个对象在其内部状态改变时改变它的行为. 对象看起来似乎修改了它的类.(状态与行为绑定, 状态变了, 行为也就随之改变.).
操作.
结构:
图23
说明: 状态与行为绑定, 状态变了, 行为也就随之改变.(状态就是这个具体状态类对象, 行为就是该具体类的Handle方法)
http://blog.csdn.net/bagboy_taobao_com/article/details/13002129
22. Strategy(策略模式)
意图: 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换. 本模式使得算法可独立于使用它的客户而变化..
结构:
图24
说明: 比较Strategy模式与State模式的结构图, 它们是一样的. 而且原理也是一样的, State模式是把状态对象绑定了对应状态的行为, 而Strategy模式也是用对象(策略对象)来绑定对应的实现. (个人理解: Strategy模式是State模式的特例, 或者说State模式是Strategy模式).
http://blog.csdn.net/bagboy_taobao_com/article/details/13002245
23. Template Method(模板方法模式)
意图: 定义一个操作中的算法的骨架, 而将一些步骤延迟到子类中. TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.
结构:
图25
说明: Template Method实现框架是使用了继承, 这种继承关系在程序运行前已经固定好的, 而Strategy模式的思想也可以实现框架, 它使用的包含, 更灵活.
http://blog.csdn.net/bagboy_taobao_com/article/details/13002341
24. Visitor(访问者模式)
意图: 表示一个作用于某对象结构中的各元素的操作. 它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作.
结构:
图26
说明: 增加具体Visitor简单方便, 但ObjectStruct增加一个Element, 则Visitor层次需要改变Visitor的接口. 所以Visitor是常变部分, 而Element是不常变部分.
http://blog.csdn.net/bagboy_taobao_com/article/details/13090285
http://blog.csdn.net/bagboy_taobao_com/article/details/13090313