设计模式之行为模式
来源:互联网 发布:dnf for mac 编辑:程序博客网 时间:2024/04/30 01:58
行为模式是对不同的对象之间,划分其责任和算法。
分类:类结构模式或对象结构模式
包含下列模式:
1)不变模式
2)策略模式
3)模板方法模式
4)观察者模式
5)迭代子模式
6)责任链模式
7)命令模式
8)备忘录模式
9)状态模式
10)访问者模式
11)解释器模式
12)调停者模式
一、不变模式
例子:Java里String,Integer, Float等各种封装类
分为:
1)弱不变模式: 子类可能有变化。
2)强不变模式: 子类业务变化或根本不能有子类。
注意:1)不变模式不是无状态,它可以有状态,只不过状态不变而已。
2)不同于只读属性。例如年龄,即使设置了只读属性,随着时间的变化,其年龄属性也发生变化。
使用方法:
直接在构造的时候,确定状态值,并不允许以后再修改状态。
二、策略模式
例子:以前做的台球算账程序,图书折扣,诸葛亮的锦囊妙计(3个锦囊,3个计策)
目的是封装一组算法,每一个算法是一个具体的策略类。
使用的时候由客户端来决定具体使用哪一个策略类。
三、模板方法模式
例子:好莱坞原则,西天取经八十一难(这81磨难是设计好不能少的,唐僧是具体模板,经历了西游记的81难,换成我去取经也是要经历81难的,第一难,第二难。。。。第81难)
准备一个抽象类,将顶级的逻辑完成,然后声明一些抽象方法来迫使子类来实现其余的逻辑。(这些抽象方法已被抽象类的顶级逻辑所调用)
不同的子类以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。
四、观察者模式
例子:发布-订阅,awt的Listener。
校色有两类,一个是主题,一个是观察者对象,它们是1:N的关系。
当主题的状态发生变化时,可以通知所有的观察者对象。 (调用观察者对象类似Update()的方法)
五、迭代子模式
目的:该模式将迭代逻辑(正序遍历,反序遍历,增加,删除)与聚集本身分开。(聚集是采用vector还是list,都不影响迭代)。
该模式可采用内部类的方式,限制其他类对聚集类索引的访问。(只对迭代类公开)
六、责任链模式
例子:传花击鼓, AWT事件处理,java城堡竞赛
很对对象由每一个对象对其下家的引用而连接起来形成一个链条。
关键点:基类有类似的三个函数
1)是否满足
2)满足执行的一些action
3)取得下家(不满足时)
重点的对象是命令(抽象对象和具体对象)
简单来说,这个模式是在请求者和接受者之间建立一个command角色, 类似于c的callbcack。
例子:太上老君请猴王上天。 请求者太上老君,接受者猴王,命令是执行的圣旨。
上帝造万物。 抽象命令角色只需要一个借口函数execute(), 具体命令角色:造天command, 造地command, 造人command等。
- 设计模式之行为
- 设计模式之行为模式
- 设计模式之行为模式
- 设计模式之行为模式
- 设计模式-行为模式之观察者模式
- 设计模式 行为模式之模板模式
- 设计模式 行为模式之迭代子模式
- 设计模式 行为模式之观察者模式
- 设计模式 行为模式之状态模式
- 设计模式 行为模式之策略模式
- 设计模式之行为模式---状态模式
- 设计模式之行为型设计模式
- (行为模式)设计模式之Command
- (行为模式)设计模式之Template
- 设计模式之行为模式(全)
- 设计模式之行为模式(一)
- 设计模式之行为模式(二)
- Java设计模式之行为模式
- 显卡类型和shader版本大致对应列表
- mysql安装过程实录
- sim, uim, usim
- Perl 二维数组教程
- rails 路由设置
- 设计模式之行为模式
- 用MFC实现WebGUI--(CDHtmlDialog)
- 万恶的null
- fcntl函数总结
- GAE 云服务RPC机制
- Android培训三十二课第五讲
- GridView
- How to Automate Startup/Shutdown of Oracle Database on Linux [ID 222813.1]
- VC++的两种串口通讯方法