Net设计模式实例之状态模式(State Pattern)(2)

四.案例分析(Example

1、场景

银行账户根据余额可分为三种状态RedStateSilverStateGoldState,这些状态分别代表了透支帐户(overdrawn accounts),新开帐户(starter accounts),标准帐户(accounts in good standing)..如下图所示
Net设计模式实例之状态模式(State Pattern)(2)
 
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、程序运行结果

Net设计模式实例之状态模式(State Pattern)(2)

五、总结(Summary

状态模式(State Pattern),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。当一个对象行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了。









本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/270543,如需转载请自行联系原作者