包建强的开源地带
我的微软梦,实现了一半
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 327 文章- 3 评论- 1136
我也设计模式——17.State
状态模式是把各种状态封装成不同的类。
关于Context类的实现,不太同于Strategy,虽然原理是一样的:
public
class
Context
{
private
State stateA, stateB, state;
public
Context()
{
stateA
=
new
StateA();
stateB
=
new
StateB();
}
public
void
Request(
int
temp)
{
if
(temp
>
0
)
state
=
stateA;
else
state
=
stateB;
state.Handle();
}
}
可以看到,Request()方法是基于简单工厂的。
还有,Context的ctor是基于单件模式的,可以使用注册工厂来简化。
在Client端的调动方式,就这么简单:
Context context
=
new
Context();
context.Request(
20
);
基于委托的状态模式
委托部分:
public
delegate
void
state();
public
class
ContextUseingDelegate
{
public
state myState;
public
void
ContextInterface()
{
myState();
}
}
我们需要在Context类中使用委托,而在Client端不变:
public
class
Context
{
public
void
Request(
int
temp)
{
ContextUseingDelegate cud
=
new
ContextUseingDelegate();
if
(temp
>
0
)
{
StateA sa
=
new
StateA();
cud.myState
+=
new
state(sa.ConcreteStateA);
}
else
cud.myState
+=
new
state(StateB.ConcreteStateB);
cud.ContextInterface();
}
}
posted @ 2007-10-04 11:41
包建强
阅读(77)
评论(0)
编辑
收藏
所属分类:
Design Patterns
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-10-26 16:07 编辑过
相关文章:
小菜编程成长记(十三 设计模式不能戏说!设计模式怎就不能戏说?)
程序人生演讲内容摘要 ---侯捷
.NET设计模式系列文章
.NET设计模式(2):单件模式(Singleton Pattern)
VS2008里的网页,中文一编辑就变成了数字
Sql Server 2005 CLR 调用COM组件出错
XUnit Test Patterns这本书值得看看
UML和模式应用
相关链接:
所属分类的其他文章:
被遗忘的设计模式——1.不变模式(Immutable)
一些被遗忘的设计模式
我也设计模式——22.Iterator
我也设计模式——19.Mediator
我也设计模式——15.Chain of Responsablity
我也设计模式——9.Bridge
我也设计模式——16.Interpreter
我也设计模式——24.Template Method
我也设计模式——23.Strategy
我也设计模式——17.State
最新IT新闻:
11个处于悬崖边缘的 Web 公司
扎克博格:Facebook要先赚吆喝后赚钱
金融风暴改写富豪榜排名 巴菲特资产超盖茨
红杉资本发出严重警告:黄金时代已成历史
2008年10月11日科技博客精选
公告
姓名:包建强
位置:中国 上海
学历:复旦大学数学系 本科
工作:某外企医疗研发中心 软件工程师
MSN:bjq_ren@hotmail.com
MVP:2008.7——2009.7
MVP配置
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的文章
我的参与
最新评论
我的标签
我管理的小组
读书(Books)
写书译书小组
博客园精华集出版小组
随笔分类
.NET C#(6)
(rss)
.NET CLR(25)
(rss)
.NET MSIL(39)
(rss)
.NET Reflection(6)
(rss)
.NET Serializable(6)
(rss)
.NET好书逐个评(3)
(rss)
AJAX(3)
(rss)
ASP.NET 2.0(14)
(rss)
Data Structures(2)
(rss)
Design Patterns(29)
(rss)
Open SourceCode(4)
(rss)
Others(54)
(rss)
SharpDevelop 0.92(11)
(rss)
SQLServer研究(3)
(rss)
WCF(2)
(rss)
WF(5)
(rss)
WPF(106)
(rss)
包包版网络棋牌大厅(10)
(rss)
包包点评
(rss)
博客园精花集(21)
(rss)
随笔档案
2008年10月 (4)
2008年9月 (17)
2008年8月 (14)
2008年7月 (28)
2008年6月 (11)
2008年5月 (15)
2008年4月 (58)
2008年3月 (26)
2008年2月 (8)
2008年1月 (1)
2007年10月 (31)
2007年9月 (30)
2007年8月 (9)
2007年7月 (7)
2007年5月 (3)
2007年4月 (36)
2007年3月 (20)
2006年11月 (4)
最新随笔
1. 我读过的世界名著
2. 包包技术书籍推荐
3. 十一节打博得之门2
4. 微软10月份mvp名单发布,祝贺博客园中当选的兄弟们!
5. 《博客园精华集---软件工程分册》第三轮筛选结果
6. 《博客园精华集》五项联合声明
7. 推荐一本SQL经典书籍
8. 很多头绪,有点乱,理清一下
9. 发布塔罗牌21张
10. (翻译)《Expert .NET 2.0 IL Assembler》 第八章 基本类型和签名(二)
积分与排名
积分 - 183817
排名 - 192
最新评论
1. 请教wpf文本框如何按回车换行
请教wpf文本框如何按回车换行 (zhangyu111)
2. re: 我读过的世界名著
莎士比亚全集——没看过四大悲剧就不要说爱好文学!
===============================
这。。。 (江南白衣)
3. re: 我读过的世界名著
博主有时间在各列列中国文学中值得一看的吧,呵呵,本人基本上只看国内的,特别喜欢茅盾文学奖系列 (会长)
4. re: 《博客园精华集》五项联合声明
期待nET3.5 (网碾平)
5. re: 包包技术书籍推荐
哎,好像就有3本 AJAX2本和wcf编程 (李永京)
6. re: 《博客园精华集》五项联合声明
希望早日看到书籍成功出版 (生鱼片)
7. re: 《Programming WPF》翻译 第9章 自定义控件
老兄,你要是有时间,将这本书做个翻译版啊。 (从天而降)
8. re: 十一节打博得之门2
话说搜了下网上说是4cd,好像太大了,怕怕。 (木野狐(Neil Chen))
9. re: 微软10月份mvp名单发布,祝贺博客园中当选的兄弟们!
做技术的时候不要太看重名利 (生鱼片)
10. re: 微软10月份mvp名单发布,祝贺博客园中当选的兄弟们!
--引用-------------------------------------------------- Artech: 知识只有通过传播才能发挥其价值,专家的价值在于推动知识的传播。毫无疑问,有... (Henry Zhao)