0

シングルトンであるリソースマネージャーのようなマネージャーがいます。一部のオブジェクトは、このマネージャーのメソッドを呼び出す必要があります。この練習はベッドのにおいがしますか?

some object logic: ResourceManager::init()->callMethod();

シングルトンへの参照は使用していません。実行時に取得しています。それは適切ですか?

4

2 に答える 2

0

シングルトンを使用する健全な方法は非常に単純です。

クラス ResourceManager { ... }; // 通常どおりクラスを実装します

ResourceManager& GetResMan() { ... } // インスタンスを呼び出して返すグローバル アクセス ポイント。これは、ローカルの静的、ファイル名スコープの静的、またはまれなケースで追加の作成トリックを使用する場合もあります。

シングルトンを提供するものとして文書化します。

GetResMan().DoStuff(); // クライアント サイトでの使用

ここから、それが良いか悪いかは、実際にそのマネージャーにシングルトンを使用するつもりかどうかは、アプリケーションのロジック/設計によって異なります。肯定的な場合は、バッシング キャンペーンを安全に無視できます。

洗練されたバージョンには 2 つのアクセス関数があり、メインストリームは const ref を返すため、変化するクライアント呼び出しを残りから簡単に見分けることができます。ただし、クラスの性質とそのユースケースによって異なります。

于 2013-05-26T13:46:34.887 に答える