2016-10-16 6 views
0

ビューを表示するときに再利用するビューがある場合は、より良い方法です:ビューの表示を処理するクラスでインスタンス変数を作成する、またはビューをシングルトンとして定義してから、そのビューを参照します自分のクラス?ゲームのビュー:インスタンス変数対シングルトン?

ので、この...

class Game 
{ 
    GameView view = new GameView(); 

    void Method() 
    { 
     view.Show(); 
    } 
} 

...またはこれ?

void Method() 
{ 
    GameView.Instance.Show(); 
} 

これは単なる問題ですか?ゲームはシングルトンになります。

答えて

2

これらのビューの作成に費用がかかる場合を除き、新しいインスタンスにします。それはテストを容易にし、IOCのようなアーキテクチャパターンを可能にします。

さらに、2つ存在することは決してありませんか?

1

シングルトンを使っているものは、本当に良い理由がない限り、使用しないでください。良いアイデアを持たないのはいい理由ではありません!

あなたはシングルトンがGoFのことで導入されたとき、彼らはグローバル状態のいくつかの並べ替えを必要とする問題の解決として意味していた、参照してください。しかし、あまりにも多くの人々が間違った方法を持っています - "あなたは、それのためのパターンがあるので、グローバルな状態に行くのは大丈夫です。"そして、それは単に間違っています。

グローバル状態は、アプリケーションのテストと保守をより困難にします。通常は互いに関係するコードの異なる部分間の結合を追加します。

ですから、ストーリーは短いですが、インスタンス変数を使用してください。しかし、あなたのGameViewオブジェクトを直接作成するのではなく、dependency injectionを調べることで、あなたのゲームオブジェクトは、あなたの例のようにタイトなカップリングを持つ代わりに、いくつかのフレームワークからビューを受け取ることができます。

関連する問題