Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95492
  • 博文数量: 109
  • 博客积分: 3411
  • 博客等级: 中校
  • 技术积分: 1155
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 09:04
文章分类

全部博文(109)

文章存档

2011年(109)

分类: Java

2011-07-26 16:39:02

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0


状态模式自身结构非常简单——前面刚刚介绍了几个结构比较简单的设计模式,和他们 

一样,状态模式在具体实现上留下了可变换的余地。我前面已经介绍过它的孪生兄妹策略模 

式了,大家可以两者比较着阅读。本文将会讨论两者的区别。 

二、定义与结构 

     GOF 《设计模式 》中给状态模式下的定义为:允许一个对象在其内部状态改变时改变它 

的行为。这个对象看起来似乎修改了它的类。看起来,状态模式好像是神通广大——居然能 

修改自身的类” ! 

     能够让程序根据不同的外部情况来做出不同的响应,最直接的方法就是在程序中将这些 

可能发生的外部情况全部考虑到,使用if   else  语句来进行代码响应选择。但是这种方法对 

于复杂一点的状态判断,就会显得杂乱无章,容易产生错误;而且增加一个新的状态将会带 

来大量的修改。这个时候能够修改自身的状态模式的引入也许是个不错的主意。 

     状态模式可以有效的替换充满在程序中的if   else 语句:将不同条件下的行为封装在一 

个类里面,再给这些类一个统一的父类来约束他们。来看一下状态模式的角色组成吧: 

1)   使用环境(Context)角色:客户程序是通过它来满足自己的需求。它定义了客户程序 

     需要的接口;并且维护一个具体状态角色的实例,这个实例来决定当前的状态。 

2)   状态(State)角色:定义一个接口以封装与使用环境角色的一个特定状态相关的行为。 

3)   具体状态(Concrete State)角色:实现状态角色定义的接口。

阅读(335) | 评论(0) | 转发(0) |
0

上一篇:解释器模式

下一篇:策略模式

给主人留下些什么吧!~~