問題:
CCarManager、CTruckManager など、完全に別のソフトウェア マネージャー (ソフトウェア エンティティ) があります。ある時点で、CCar などの新しいオブジェクトを作成しています。CCar は、CResourceManager、CTruckManager など、さまざまな個別のマネージャーとの関係を持っている必要があります。これらのマネージャーと CCar をリンクする最良の方法は何ですか?
ソリューション:
グローバル ソフトウェア マネージャー (ヘッダー ファイルに Singleton または extern) がある [グローバルは好きではない]
1 つのグローバル ポイントを使用して、CCar(CApplication)、CApplication->TrukManager()、CApplication->CarManager() などの他のオブジェクトに渡します...
CCar(CCarManager *pCarManager, CTruckManager *pTruckManager....) に渡す [拡張が難しい]
CCar.Attach(CCarManager)、CCar.Attach(CTruckManager) などの Observer パターンを使用します。【拡張しやすいが、メソッド呼び出しの扱いが中心になる、どこが何を担当するかなど、チェックも多い】
工場。
class CCarFactory(CCarManager *pMngr) { CCar *CreateCar() { return CCar(m_pCarManager); } }
他の方法は何ですか?