4、状态模式总结
状态模式将一个对象在不同状态下的不同行为封装在一个个状态类中,通过设置不同的状态对象可以让环境对象拥有不同的行为。而状态转换的细节对于客户端而言是透明的,客户端不直接操作状态类,也就不需要知道状态转换细节,降低了客户端与具体状态类的耦合性。状态类和环境类是一种组合的关系,当客户端调用环境类的方法时,环境类将委托调用状态类的方法。使用状态模式封装了一个个具体的状态类,...
分类:
编程语言 时间:
2014-08-31 11:56:51
阅读次数:
297
在阐述状态模式之前,先来看一个例子。一个银行取款问题: 如果账户余额大于0,则正常取款;如果余额在-2000和0之间,则透支取款;如果余额小于-2000,则账户处于冻结状态,无法进行取款操作。
实现代码如下:
//银行账户
class Account
{
private:
//余额
int m_nBalance;
public:
//取款操作
void WithDraw()...
分类:
编程语言 时间:
2014-08-31 09:18:41
阅读次数:
250
3、使用环境类实现状态的转换
在状态模式中实现状态转换时,具体状态类可通过调用环境类Context的setState()方法进行状态的转换操作,也可以统一由环境类Context来实现状态的转换。此时,增加新的具体状态类可能需要修改其他具体状态类或者环境类的源代码,否则系统无法转换到新增状态。但是对于客户端来说,无须关心状态类,可以为环境类设置默认的状态类,而将状态的转换工作交给具体状态类...
分类:
编程语言 时间:
2014-08-31 09:17:11
阅读次数:
250
2、智能空调的设计与实现
某软件公司将开发一套智能空调系统: 系统检测到温度处于20---30度之间,则切换到常温状态;温度处于30---45度,则切换到制冷状态; 温度小于20度,则切换到制热状态。请使用状态模式对此系统进行设计。
从需求中可以看出,空调可以处于三种状态: 制热状态、常温状态、制冷状态。每种状态下都存在三种行为:保持常温、制冷、制热...
分类:
编程语言 时间:
2014-08-30 23:10:20
阅读次数:
302
【1】什么是状态模式?不同的状态,不同的行为。或者说,每个状态有着相应的行为。【2】状态模式的代码示例:代码示例: 1 #include 2 #include 3 using namespace std; 4 5 class Work; 6 class State; 7 class Foren...
分类:
其他好文 时间:
2014-08-30 21:35:10
阅读次数:
332
状态模式(State Pattern)是设计模式的一种,属于行为模式。 定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系.....
分类:
编程语言 时间:
2014-08-26 22:51:07
阅读次数:
278
模式说明所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。模式结构图程序示例说明:游戏存档,恢复代码:class Memonto(object): _blood=0 _magic=0 def set...
分类:
其他好文 时间:
2014-08-25 18:28:54
阅读次数:
219
模式说明当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。模式结构图程序示例说明:程序员一天不同时刻的状态代码:import timeclass IState(object): def work(self): passclass Programer(obje...
分类:
其他好文 时间:
2014-08-25 18:27:15
阅读次数:
259