State 模式

Posted on 2009-12-29 21:25 rikisand 阅读(483) 评论(0)  编辑 收藏 引用 所属分类: 工作记录~~everydayDesign Pattern

STATE 模式:

一个对象的行为取决于他的状态,而且它必须在运行时根据状态改变他的行为。常规实现中,一个操作含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常使用一个或者多个枚举常量表示。STate模式把这些状态时候的对象看做一个独立的对象,也就是将不同状态时的行为分散到相应的状态类中。要达到这样的效果,需要context,也就是状态的持有者,即原先的类;抽象状态类,他封装了与context交互的接口;具体状态类,也就是一个个的具体状态。context中保存一个抽象状态类对象为成员,并delegate对象行为给他,从而使相应状态下的行为代码生效。如果状态改变的准则不是固定的则state状态类同时应该重写changestate类以控制状态的改变,否则可以在context中实现。

具体到我们的项目:

每一个device即为context,他拥有一个state对象,device中的函数processMsg(){state->processMSg();} 由于状态改变的规则依赖于收到的消息,也就是说一个状态可能转换到多个状态device的每个状态需要重写statechange方法,stateChange(){state->stateChange(this,msg);} 这样,不同的状态下的行为实现在具体状态的类中,比原先的版本清晰明了,可读性更强。


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理