首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

State模式在客户端软件中的应用(1)简介

State模式在客户端软件中的应用(1)简介

引言在分层软件体系结构中,服务端程序关注于实现业务逻辑,客户端程序则包含用户界面。服务端程序由客户端程序调用,其请求、响应模式在设计时已经确定,运行时出现问题的概率较小。相反,客户端程序与用户直接交互,虽然有正确规定的操作顺序或模式,但是用户的操作是不可预知的,程序必须处理各种操作错误、加上数据输入有效验证等要求,使得客户端程序的开发成本上升。
因而,一旦有经过充分测试的、甚至是通过验收的用户交互程序GUI,应该尽可能的重用该GUI,以提高软件的可靠性、可维护性。
在对一个J2EE项目的重构、增加新功能的过程中,对客户端GUI程序,我们使用了State模式。结果显示,该模式的使用,不但减少了客户端GUI程序的程序规模(LOC),而且,该部分的开发及单元测试时间大大减少,同时,在集成测试中发现的缺陷数量比使用该模式前平均减少了3倍。本文就该项目中使用State模式的方式进行介绍。
1. State模式首先,先简单介绍一下State模式。
该模式是指在对象的内部状态改变时改变对象的行为【1】。其结构如图1所示。
图1 State模式结构模式中各个参与者职责简介如下:
  • Context:用户对象,拥有一个State类型的成员,以标识对象的当前状态;
  • State:接口或基类,封装与Context的特定状态相关的行为;
  • ConcreteState:接口实现类或子类,实现了一个与Context某个状态相关的行为。
运行时,Context将与状态相关的请求委托给当前的ConcreteState对象处理。关于State模式更详尽的介绍,请参阅参考文献1。
返回列表