タグ付けされた質問 「factory-method」


19
FactoryとAbstract Factoryのデザインパターンの基本的な違いは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 ファクトリパターンと抽象ファクトリパターンの基本的な違いは何ですか?

16
抽象ファクトリーとファクトリーデザインパターンの違いは何ですか?
これら2つのパターンの違いについては多くの投稿があることは知っていますが、見つけられないことがいくつかあります。 私が読んでいることから、ファクトリメソッドパターンを使用すると、単一の具体的な製品を作成する方法を定義できますが、一般的な製品を表示するため、クライアントから実装を隠すことができます。私の最初の質問は、抽象ファクトリーについてです。その役割は、単一のコンクリートオブジェクトだけでなく、使用する具体的なファクトリに依存するコンクリートオブジェクトのファミリを作成できるようにすることですか?抽象ファクトリーは、呼び出すメソッドに応じて、非常に大きなオブジェクトを1つだけ返すのか、それとも多くのオブジェクトを返すのですか? 私の最後の2つの質問は、私が多くの場所で見たことを完全には理解できない単一の引用に関するものです。 2つの違いの1つは、抽象ファクトリパターンでは、クラスがオブジェクトのインスタンス化の責任を合成によって別のオブジェクトに委譲するのに対し、ファクトリメソッドパターンは継承を使用し、サブクラスに依存して目的のオブジェクトのインスタンス化を処理することです。 私の理解では、ファクトリー・メソッド・パターンにはCreatorインターフェースがあり、これにより、具象化するConcreteProductを、ConcreteCreatorが管理できるようになります。これは、継承を使用してオブジェクトのインスタンス化を処理することの意味ですか? さて、その引用に関して、抽象ファクトリパターンは、オブジェクトのインスタンス化の責任を、合成を介して別のオブジェクトにどのように委任するのでしょうか。これは何を意味するのでしょうか?抽象ファクトリパターンも、継承を使用して構築プロセスを実行しているように見えますが、やはりこれらのパターンについてはまだ学習しています。 特に最後の質問で何か助けていただければ幸いです。

10
C ++でファクトリメソッドパターンを正しく実装する方法
簡単に聞こえますが、正直に言うとどうすればいいのかわからないので、C ++には長い間不快に感じていたものが1つあります。 C ++でFactoryメソッドを正しく実装するにはどうすればよいですか? 目標:許容できない結果やパフォーマンスへの影響なしに、クライアントがオブジェクトのコンストラクタの代わりにファクトリメソッドを使用してオブジェクトをインスタンス化できるようにすること。 「ファクトリー・メソッド・パターン」とは、オブジェクト内の静的なファクトリー・メソッドまたは別のクラスで定義されたメソッド、またはグローバル関数の両方を意味します。一般的には、「クラスXのインスタンス化の通常の方法をコンストラクター以外の場所にリダイレクトするという概念」です。 私が考えたいくつかの可能な答えをざっと見てみましょう。 0)工場を作らず、コンストラクタを作る。 これは良さそうですが(実際、多くの場合は最善の解決策です)、一般的な解決策ではありません。まず、オブジェクトの構築が別のクラスへの抽出を正当化するのに十分複雑なタスクである場合があります。しかし、その事実はさておき、コンストラクターだけを使用する単純なオブジェクトの場合でさえ、多くの場合そうしません。 私が知っている最も簡単な例は、2-D Vectorクラスです。とてもシンプルですが、トリッキーです。デカルト座標と極座標の両方から構築できるようにしたいと考えています。明らかに、私はできません: struct Vec2 { Vec2(float x, float y); Vec2(float angle, float magnitude); // not a valid overload! // ... }; 私の自然な考え方は次のとおりです。 struct Vec2 { static Vec2 fromLinear(float x, float y); static Vec2 fromPolar(float angle, float magnitude); // ... }; これは、コンストラクターの代わりに、静的ファクトリーメソッドの使用につながります...これは、本質的に、何らかの方法でファクトリーパターンを実装していることを意味します(「クラスが独自のファクトリーになる」)。これは見栄えがよく(この特定のケースに適しています)、場合によっては失敗します。これについては、ポイント2で説明します。 …



7
デザインパターン:ファクトリvsファクトリメソッドvs抽象ファクトリ
ウェブサイトからデザインパターンを読んでいた そこで、ファクトリー、ファクトリーメソッド、アブストラクトファクトリーについて読みましたが、それらは非常に混乱しており、定義が明確ではありません。定義によると ファクトリ-インスタンス化ロジックをクライアントに公開せずにオブジェクトを作成し、共通のインターフェースを介して新しく作成されたオブジェクトを参照します。ファクトリーメソッドの簡易バージョンです ファクトリメソッド-オブジェクトを作成するためのインターフェイスを定義しますが、インスタンス化するクラスをサブクラスに決定させ、共通のインターフェイスを通じて新しく作成されたオブジェクトを参照させます。 抽象ファクトリー-クラスを明示的に指定せずに、関連オブジェクトのファミリーを作成するためのインターフェースを提供します。 Abstract FactoryとFactory Methodに関する他のスタックオーバーフロースレッドも調べましたが、そこに描画されたUMLダイアグラムは理解をさらに悪くします。 誰か教えてください これら3つのパターンはどのように違うのですか? いつ使用するのですか? また、可能であれば、これらのパターンに関連するJavaの例はありますか?

10
デザインパターン:抽象ファクトリとファクトリメソッド
注:質問は投稿の最後にあります。 Abstract FactoryとFactory Methodに関する他のスタックオーバーフロースレッドを読みました。各パターンの意図を理解しています。しかし、私はその定義を明確にしていません。 Factoryメソッドは、オブジェクトを作成するためのインターフェースを定義しますが、インスタンス化するものをサブクラスに決定させます。ファクトリメソッドを使用すると、クラスはインスタンス化をサブクラスに遅らせることができます。 対照的に、抽象ファクトリは、具体的なクラスを指定せずに、関連するオブジェクトまたは依存するオブジェクトのファミリを作成するためのインターフェースを提供します。 - ジョン・フェミネラ 抽象ファクトリーと非常によく似ていますファクトリメソッド。私のポイントを説明するために、いくつかのUMLクラスを描画しました。 注意: 図はwww.yuml.comからのものですので、完全に方向付けられていません。しかし、それは無料のサービスです:)。 図は完全ではない場合があります。GoFのデザインパターンはまだ学習中です。 工場での方法: 抽象ファクトリー(1メンバーのみ): 抽象ファクトリー(より多くのメンバー): 質問: 場合抽象工場は一つだけ作成者と一つの製品を持っている、それはまだある、抽象ファクトリパターン?(家族を作成するためのインターフェース) ファクトリメソッドコンクリートクリエーターをインターフェイスから作成できますか、それともクラスから作成する必要がありますか?(クラスはインスタンス化をサブクラスに延期します) 抽象工場は一つだけ作成者と一つの製品を持つことができる場合は、唯一の違いである抽象工場とファクトリメソッド元のための作成者が、後者はクラスであるためにインターフェイスと作成者であることは?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.