2016-10-12 4 views
0

.NETフレームワークを使ってプログラミングを練習しており、実際にSingleton patternState patternと混同しています。私はシングルトンパターンで作業しようとしましたが、どのようにして同じクラスにStateパターンを実装することができますか?私のコードは、プロパティをautoimplementedたBankAccountである、すなわちAccountStateIDシングルトンパターンで状態パターンに1つのクラスで取り組むにはどうすればいいですか

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

を見ている場合:あなたはその後、上記のようにはい、あなたは同じパターンを使用している場合
関連する問題