四.案例分析(Example)
1、场景
银行账户根据余额可分为三种状态
RedState
,
SilverState
,
GoldState
,这些状态分别代表了透支帐户
(overdrawn accounts)
,新开帐户
(starter accounts),
标准帐户
(accounts in good standing)..
如下图所示

RedState
类
:账号余额在范围【
0.0,1000.0
】表示处于处于
SilverState
。否则转换为其他状态。
if
(balance < lowerLimit)
{
account.State = new RedState
(this
);
}
else
if
(balance > upperLimit)
{
account.State = new GoldState
(this
);
}
SilverState
类
:
账号余额在范围【
-100.0,0
】表示处于处于
RedState
。否则转换为其他状态。
if
(balance > upperLimit)
{
account.State = new SilverState
(this
);
}
GoldState
类
:
账号余额在范围【
1000.0,10000000.0
】表示处于处于
GoldState
。否则转换为其他状态。
if
(balance < 0.0)
{
account.State = new RedState
(this
);
}
else
if
(balance < lowerLimit)
{
account.State = new SilverState
(this
);
}
2、代码
请参看:http://www.cnblogs.com/ywqu/archive/2010/01/26/1656418.html
3、程序运行结果

五、总结(Summary)
状态模式(
State Pattern
),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。当一个对象行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了。
本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/270543,如需转载请自行联系原作者