我如何在一个类中处理状态模式和单例模式

本文关键字:处理 状态 模式 单例模式 一个 | 更新日期: 2023-09-27 18:12:44

我正在使用.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.

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

我如何在一个类中处理状态模式和单例模式

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

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

另外,如果你想了解更多关于单例的线程安全实例化,请查看MSDN