0

私のプログラムには、モデル (クラス) を描画して作業するためのウィンドウがあります。実行時に他の多くのクラス (オブジェクト) がこれら 2 つを使用します。このため、それらへの参照を保持する必要があります。これまでは、メインの GUI クラスで 2 つのポインターをメンバー変数として保持していましたが、より良い戦略を使用したいと考えています。シングルトンパターンが理想のようでしたが、使わないほうがいいという声も多くありました。代替手段は、直接注入 (私の場合には理想的ではないと思います) または Factory パターンのような他のパターンのようです。しかし、ファクトリパターンはものを作成し、作成されたものへの参照を保持しませんか、それとも間違っていますか? 他の多くのオブジェクトが使用するオブジェクトへの参照を保持するある種のグローバル コンテナを持つのに役立つ他のパターンはありますか?

4

2 に答える 2

1

参照の保持方法を変更する必要があるかどうかはわかりません。メインの GUI クラスは、アプリケーションの一部として作成されたものを追跡します。これは完全に合理的です。

シングルトンを使用することは基本的に「どのオブジェクトが作成されたかを追跡するメインGUIクラス以外のオブジェクトを作成することを意味します。GUIクラスに尋ねる代わりに、オブジェクトは代わりにシングルトンに尋ねます。すでにGUIクラスに尋ねている場合、それはシングルトンと同じ目的。

したがって、コードを次のようにすると、次のようになります。

object.myMethod {
<...>
  draw(mainGuiClass.textWindow, bla, bla, bla);

...そして、textWindow は静的です。おそらく、すでに mainGuiClass をシングルトンとして使用しています。

代わりに、この object.someMethod(mainGui.textWindow, bla, bla, bla) のようにメソッドが呼び出されるか、mainGuiClass または mainGuiClass.textWindow への参照を使用してオブジェクトが作成される場合は、何らかのインジェクションを使用しています。

これは役に立ちますか?

于 2012-08-16T08:06:26.160 に答える
0

ウィンドウとモデルをシングルインスタンスにする場合は、シングルトーンを使用します。私は正しく理解しました、あなたはそれらを単一のインスタンスで欲しいですか?

于 2012-08-16T08:23:29.823 に答える