繁体   English   中英

我如何在一个班级中使用单例模式处理状态模式

[英]How can i tackle State Pattern with Singleton pattern in one class

我正在使用.NET框架练习编程,我真的很困惑Singleton patternState pattern 我尝试使用单例模式进行工作,现在如何对同一个类实现状态模式。 我的代码是BankAccount ,它具有自动实现的属性,即AccountStateID

    public class BronzeState : AccountStates
    {

    //static member
    private static BronzeState bronzeState;

    //constructor
    private BronzeState()
    {
        this.LowerLimit = 0;
        this.UpperLimit = 5000;
        this.Rate = 0.01 / 100;
    }

    public static BronzeState GetInstance()
    {
        if (bronzeState != null)
            return bronzeState;
        else
        {
            bronzeState = new BronzeState();
            return bronzeState;
        }
    }

    public void StateChangeCheck(BankAccount bankAccount)
    {
        if (bankAccount.Balance > UpperLimit)
        {
            bankAccount.AccountState = new SilverState(); 
        }
    }
}
//same goes with GoldSte , SilverState, PlatinumState.

我唯一的问题是如果余额超过上限,我如何使用状态模式来改变状态。

如果从AccountStates继承的所有类都是单例,您是否在问如何将BankAccount类的AccountState属性设置为不同的状态? 如果是,并且您使用了与上述相同的模式,则:

public void StateChangeCheck(BankAccount bankAccount)
{
    if (bankAccount.Balance > UpperLimit)
    {
        bankAccount.AccountState = SilverState.GetInstance(); 
    }
}

另外,如果您有兴趣了解有关单例线程安全实例化的更多信息,请查看MSDN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM