Net设计模式实例之状态模式(State Pattern)(2)
四.案例分析(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,如需转载请自行联系原作者