2016-10-12 24 views
0

我正在使用.NET框架練習編程,我非常困惑於Singleton patternState pattern。我嘗試過使用單例模式,現在我怎樣才能將狀態模式實現到同一個類。我的代碼是BankAccount已autoimplemented財產即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. 

我唯一的問題是我如何使用狀態模式來改變狀態,如果餘額爲更多的上限。

回答

1

如果從AccountStates繼承的所有類都是單例,您是否在問如何將BankAccount類的AccountState屬性設置爲不同的狀態?

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

另外,如果你有興趣瞭解更多關於單身的線程安全的實例,看看MSDN

:如果是的話,當你如上所述,那麼你已經使用了相同的模式