ホームページ > バックエンド開発 > C++ > パラメーター化されたファクトリ メソッドで過剰な依存関係を効果的に管理するにはどうすればよいですか?

パラメーター化されたファクトリ メソッドで過剰な依存関係を効果的に管理するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-21 01:32:09
オリジナル
867 人が閲覧しました

How Can I Effectively Manage Excessive Dependencies in a Parameterized Factory Method?

依存性注入と制御反転を使用したファクトリ メソッド

あなたはファクトリ メソッドと依存関係注入 (DI) パターンについてはよく知っていますが、パラメータ化されたファクトリ メソッドに多数の依存関係がある特定のケースについてのガイダンスが必要です。

問題: パラメーター化されたファクトリーへの過度の依存

ファクトリ クラスでは、コンストラクターには 6 つの依存関係が必要で、ファクトリによって作成された各 car インスタンスには異なる依存関係のセットがあります。これにより、ファクトリの管理が難しくなり、CreateCar メソッドに switch case ステートメントが導入されます。

代替方法

あなたは、車のインスタンスをファクトリ コンストラクターに直接挿入するか、サービス ロケーターを使用するという 2 つの代替案を提案しました。ただし、これらのソリューションにはそれぞれ欠点があります。車のインスタンスの挿入は工場の設計原則に違反するため、サービス ロケーターの使用は一般に推奨されません。

解決策: 依存性注入の戦略パターン

ファクトリで switch case ステートメントを使用する代わりに、依存関係の注入に Strategy パターンを採用することを検討してください。このパターンでは、それぞれが特定のタイプの車の作成専用の複数のファクトリ実装を作成できます。

実装:

  1. インターフェースの定義: ICarFactoryICarStrategy のインターフェースを導入します。 ICarFactory は車のインスタンスの作成に使用されるファクトリーを表し、ICarStrategy はファクトリーのコレクションを表します。
  2. ファクトリーの作成: Car1FactoryCar2Factory など、車種ごとに具体的なファクトリー クラスを実装します。これらのファクトリーは、コンストラクターを通じて必要な依存関係を注入します。
  3. 実装戦略: CarStrategy を実装し、ICarStrategy インスタンスの配列を含む ICarFactory クラスを作成します。 CarStrategyCreateCar メソッドは、ファクトリを反復処理して、要求された車種を作成できるファクトリを見つけます。
  4. 使用法: CarStrategy インスタンスをコードに挿入します。その後、 CreateCar メソッドを使用して、依存関係を直接指定せずに car インスタンスをインスタンス化できます。

ストラテジーモードの利点:

  • ファクトリ メソッド内の switch case ステートメントを削除します
  • 新しい自動車工場を簡単に追加できます
  • 各ファクトリーの DI 依存関係を容易にします
  • 工場登録をサポートする集中ロケーション

以上がパラメーター化されたファクトリ メソッドで過剰な依存関係を効果的に管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート