中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 未整理篇
设计模式复习笔记(状态模式)
作者:lilaixiong 时间:2003-02-19 11:10 出处:互联网 责编:chinaitpower
              摘要:设计模式复习笔记(状态模式)

State(状态)模式

 

Intent

允许一个对象在内部状态改变时,行为也相应改变. 看上去就像不同的类一样.

 

Also Known As

Objects for States

 

Motivation

考虑一个类TCPConnection,表达网络的连接。一个TCPConnection对象可以处于若干不同状态之一:Established, Listening或者Closed。当一个TCPConnection对象从其他对象那里接收请求之后,他依赖于当前状态有不同的响应。例如,根据连接是在Closed状态还是Established状态,同样的Open请求的效果会不同。状态模式描述了TCPConnection可以怎样在不同的状态下展现不同的行为。

 

这种模式的关键思想是引入了一个TCPState的抽象类来表达网络连接的状态。TCPState类为所有表达操作状态的类宣告了一个共同的接口。TCPState的子类实现了不同状态的行为。

 

 

Applicability

 

在下列情形中可以使用State模式:

情形1 一个对象的行为依赖于其状态,而且必须在运行时根据状态的不同改变行为

情形2 操作有大量,多方的条件性语句,依赖于对象的状态。这个状态通常由一个或多个枚举常量表达。通常,若干操作将包含同样的条件结构。状态模式把条件的不同分支装到不同的类里。这样你就可以把对象的状态本身当作一个对象来对待,拥有它自己的权利和义务,从而可以与其它的对象区别开来。

 

Structure


 

Participants

1.     Context (TCPConnection)

-定义Client感兴趣的接口

-维护定义当前状态的ConcreteState子类的实例

2.     State (TCPState)

-定义一个封装Context特定状态关联行为的接口

3.     ConcreteState subclasses (TCPEstablished, TCPListen, TCPClosed)

-每一个子类都实现了一种跟Context状态关联的行为

 

Collaborations

1.    Context把特定于状态的请求委托给当前的ConcreteState对象

2.    一个context可以把自己作为参数传递给处理请求的State对象。这样State对象在必要时就可以访问conext

3.    ContextClient的主要接口。Client可以为State对象配置context。一旦一个context对象被配置了,它的clients不会直接跟State对象打交道。

4.    Context或者ConcreteState子类都不能决定哪个状态之后是哪个状态,以及那种情况下有哪个状态。

 

Consequences

State

 


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有