13

重複の可能性:
工場パターン。ファクトリ メソッドを使用する場合
静的 Create メソッドが存在するのはなぜですか?

Factory Design Patternとは何かは知っていますが。しかし、私はそれを使用する利点が何であるかを理解できません。Factory Design Pattern を使用してオブジェクトを作成する必要があるのはなぜですか。

4

4 に答える 4

12

ファクトリを介してオブジェクトを作成することにより、サブシステムのコードが使用するインターフェイスの特定の実装に依存することを回避できます。「実装ではなく、インターフェイスに対してプログラムする」というのは、「デザイン パターン」の本の中で最も重要な単一のフレーズであり、ファクトリです。コードをその優れた目標に向けて動かすための重要な方法の 1 つです (依存性注入は、そのためのもう 1 つの重要な DP であり、古典的な本ではカバーされていませ。 ;-)。

于 2010-07-28T04:41:27.837 に答える
4

ファクトリーメソッドには様々なメリットがあります

  1. 重複オブジェクトの作成を避けることができます (オブジェクトが不変の場合)。ファクトリは、同じパラメータ セットに対して同じオブジェクトを返すことができます。
  2. factory が作成するように設計されているタイプの任意のサブタイプを作成して返すことができます。クライアント コード (呼び出しコード) を変更せずに実装を置き換える。
  3. 毎回同じオブジェクトを返すことができます (つまり、オブジェクトを取得する唯一の方法がファクトリである場合はシングルトンです)。
于 2010-07-28T04:46:38.480 に答える
3

1-実装が簡単。

2-クライアント アプリケーション コードを大幅に変更する必要はありません。

3 クラスの作成は、クライアント コードから抽象化されます。

このスレッド Factory Pattern も確認できます。ファクトリ メソッドを使用する場合

于 2010-07-28T04:44:54.287 に答える
1

その背後にある基本的な考え方は、作成を制御することです。

クライアントがメソッドを呼び出す
object Factory.GetObject(Spec spec)

現在、ファクトリは、クライアントがクラスコンストラクターをコードにハードコーディング/ベイクするのを防ぐ抽象化です。ファクトリを呼び出す代わりに、ファクトリは仕様に基づいて作成するオブジェクトの正しいサブクラスを決定します。

このアプローチは、より拡張性が高く、変化に対する回復力があります。将来的には、

  • Spec に新しい調整パラメータを追加し、それをファクトリ メソッド内で処理して、LatestAndGreatestSubclass を返すことができます。
  • 既存のオブジェクトを改善して、以前のサブクラスの v2 を返すか、まったく異なる実装と交換することができます。既存のクライアントとファクトリ メソッド インターフェイスを変更する必要はありません。

コメントが長すぎました...回答として投稿する必要がありました。

于 2010-07-28T05:46:14.263 に答える