問題タブ [factory-method]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
136 参照

python - パラメータとしてクラス属性を取るメソッドファクトリ

パラメータ化されたオブジェクト属性を何らかのロジックでラップする「メソッド ファクトリ関数」を作成すると便利だと思います。

例えば:

属性をmake_fisher文字列として渡す必要がありますか、またはこれを行うためのより良い方法はありますか?

実際の属性を渡して使用すると、 のインスタンスがtwo属性オブジェクトへの同じ参照を引き続き使用するため、ポリモーフィズムが壊れます。

IE

属性を参照するために文字列を使用する必要があるのは少し弱いようですが、これを行う別の方法は見当たりません。ある?

0 投票する
8 に答える
3154 参照

c++ - ファクトリメソッドのanti-if実装

私はC++プロジェクトにファクトリデザインパターンを適用しています。以下に、私がどのように行っているかを示します。「anti-if」キャンペーンに従ってコードを改善しようとしているので、私が持っているifステートメントを削除したいと思います。どうすればいいですか?

文字列をキーとして、コンストラクター(またはオブジェクトを作成するための何か)を使用してマップを作成することを想像します。その後、タイプ(タイプは文字列)を使用してマップからコンストラクターを取得し、ifなしでオブジェクトを作成できます。(私は少しパラノイアになっていることは知っていますが、それができるかどうか知りたいです。)

0 投票する
1 に答える
2201 参照

java - 静的ファクトリクラスを使用してGUIコンポーネントを生成する-必要なリスナーをどこにどのように追加しますか?

ファクトリクラスとメソッドを使用してGUIコンポーネントを生成したいのですが、さまざまなリスナーを宣言してコンポーネントに追加する方法とクラスがわかりません。

以下にリストされているような単純なファクトリクラスがある場合、呼び出し元のクラスに返される前に、ボタンにActionListenerを追加する必要があります。答えが「はい」の場合、リスナーを追加するにはどうすればよいですか?

getJButton()メソッドを使用してGUIに5つのボタンを追加したいとします。どのボタンがクリックされたかを認識できるように、ActionListenerをどのようにコーディングしますか?

または、リスナーを呼び出し元のクラスに追加する必要がありますか?

私は以下を試しました

エラーが発生しました:

ここでは「void」タイプは許可されていません。

0 投票する
6 に答える
6963 参照

design-patterns - 抽象ファクトリー、ファクトリーメソッド、ビルダー

この質問はだまされているように思えるかもしれませんが、ご容赦ください。関連する投稿 (およびGOFの本) を読んだことを約束します。

すべてを読んだ後でも、Abstract Factory、Factory Method、または Builder をいつ使用するかはまだ明確ではありません。たとえば、ビルダーが最もよく取り組む問題の簡単な例を見た後、最終的には沈み込むと思います。たとえば、抽象的なファクトリを使用するのは明らかにばかげています。

明確に 1 つのパターンを使用し、他のパターンを使用しない簡単な例を挙げていただけますか?

例が単純すぎると意見の問題になる可能性があることは理解していますが、できる人がいるなら、その人がSOにいることを願っています。

ありがとう。

0 投票する
3 に答える
451 参照

vb.net - 誰かがこのVB.Netコードの問題を見つけることができますか?

私はVB.Netでいくつかのコードを書いていますが、それを同僚に(もう少し慣れているとは言わないまでも)さまざまなデザインパターンでデモンストレーションしたいと思っています。FactoryMethodPatternに問題があります。

これが私のコードです:

これをコンパイルしようとすると、CarFactory.CreateCarでエラー(BC30311)が発生し、Fiesta、Mondeo、FocusをCarに変換できないと表示されます。問題が何であるかわかりません-それらはすべてCarのサブクラスです。

間違いなく、私は単純なものを見落としています。誰かがそれを見つけることができますか?

乾杯、

マーティン。

0 投票する
2 に答える
523 参照

ruby - Rubyで「クラスクラスタ」(具象サブクラスのインスタンスを持つファクトリクラス)を作成するには?

初期化パラメータに応じて具体的なインスタンスを作成する抽象クラスを作成したいと思います。例:

次に、FooSomething < SomethingGeneric、BarSomething < SomethingGeneric などが必要です。それから私がするとき:

FooSomething インスタンスを取得します。

ここでの問題は、「新しい」方法です。私はSomethingGeneric.newを定義しましたが、FooSomethingとBarSomethingはSomethingGenericのサブクラスであるため、ここでは間違った引数で呼び出される「新しい」メソッドを継承しています:

解決策の 1 つは、ファクトリ メソッド「new」に別の名前を使用することです。ただし、利便性にこだわり、「new」という名前の抽象スーパークラス ファクトリ メソッドを維持したいと考えています。

この問題を解決する最もクリーンで正しい方法は何ですか?

0 投票する
1 に答える
6478 参照

java - Java パラメータ化されたジェネリック静的ファクトリ

パラメータ化された型としてインターフェイスを使用し、この特定のインターフェイスの実装クラスを返す静的ファクトリ メソッド/クラスを Java で作成することは可能ですか?

ジェネリックに関する私の知識は限られていますが、私がやりたいことは次のとおりです。

指定したツール インターフェイスから拡張される getInstance() メソッドにインターフェイス「タイプ」のみを挿入するようにクライアント コードを制限したいと考えています。このようにして、挿入されたツールタイプが正当なツールであることを確実に知ることができます。

クライアント コードは次のようになります。

ファクトリは、ファクトリから要求される前に定義されたインターフェイスのタイプをオンにする必要があります (null かどうかは気にしないでください)。これが私が書いた方法ではうまくいかないことはわかっていますが、読者の 1 人が私が達成したいことを知っていることを願っています。

getInstance メソッドの戻り値の型は受信パラメーターと同じであるため、Parser インターフェイスが渡されると、Parser p = new ParserImpl(); も返されます。p を返します。

助けてくれてありがとう。

0 投票する
10 に答える
65773 参照

design-patterns - デザインパターン:抽象ファクトリとファクトリメソッド

注:質問は投稿の最後にあります。

抽象ファクトリとファクトリメソッドに関する他のスタックオーバーフロースレッドを読みました。それぞれのパターンの意図を理解しています。しかし、その定義ははっきりしていません。

ファクトリメソッドは、オブジェクトを作成するためのインターフェイスを定義しますが、サブクラスがインスタンス化するインターフェイスを決定できるようにします。ファクトリメソッドを使用すると、クラスはインスタンス化をサブクラスに延期できます。

対照的に、Abstract Factoryは、具体的なクラスを指定せずに、関連オブジェクトまたは依存オブジェクトのファミリーを作成するためのインターフェースを提供します。

-ジョン・フェミネラ

抽象ファクトリファクトリメソッドと非常によく似ています。私の主張を説明するために、いくつかのUMLクラスを作成しました。

ノート:

  • この図はwww.yuml.comからのものであるため、完全に方向付けられているわけではありません。しかし、それは無料のサービスです:)。
  • ダイアグラムは完全ではない可能性があります。私はまだGoFデザインパターンを学んでいます。

ファクトリメソッド:

ファクトリメソッド

抽象ファクトリ(メンバーは1つのみ):

アブストラクトファクトリー(メンバーは1人のみ)

抽象ファクトリ(より多くのメンバー):

代替テキスト

質問:

  1. Abstract Factoryにクリエーターと製品が1つしかない場合でも、Abstract Factoryパターンですか?(家族を作成するためのインターフェース)
  2. ファクトリメソッドの具象作成者はインターフェイスから作成できますか、それともクラスから作成する必要がありますか?(クラスはインスタンス化をサブクラスに延期します)
  3. 抽象ファクトリが1つの作成者と1つの製品しか持てない場合、抽象ファクトリファクトリメソッドの唯一の違いは、前者の作成者がインターフェイスであり、後者の作成者がクラスであるということですか?
0 投票する
3 に答える
467 参照

design-patterns - ファクトリ パターンのパラメータ化されたファクトリ - 他に方法はありますか?

私はGo4デザインパターンの本を読んでいて、現在ファクトリーメソッドパターンを見ています。この本はPg:110に言及しています

「ファクトリ パターンの別のバリエーションでは、ファクトリ メソッドで複数の種類の製品を作成できます。ファクトリ メソッドは、作成するオブジェクトの種類を識別するパラメータを取ります」

では、工場は常に複数の種類の製品を作成するのではないでしょうか? また、作成する製品の種類を決定するために、パラメーターを送信する必要は常にあるのではないですか? つまり、パラメーターを渡さない場合、ファクトリはどのオブジェクトを作成するかをどのように決定するのでしょうか? 別のバリエーションとはどういう意味ですか? ここでポイントがありませんか?

0 投票する
0 に答える
1029 参照

c#-4.0 - XamlWriterのC#オブジェクトXamlファクトリメソッド

私のクラスは、プロパティ(public Image myImage)として画像を使用しています。このクラスがシリアル化されている場合(XamlWriter)は正常に機能しますが、読み戻すと例外が発生します。

'タイプ'System.Drawing.Bitmap'に一致するコンストラクターが見つかりません。ArgumentsまたはFactoryMethodディレクティブを使用して、このタイプを作成できます。行番号「5」および行位置「8」。

明らかに、引数としてColorPaletteを使用したBitmapにはコンストラクターがありません。

なんとかしてビットビットを作成するファクトリメソッドを指定できることを理解しています。http://www.wpftutorial.net/XAML2009.htmlなど、このためのディレクティブに関する記事もいくつか見つかりました。

しかし、私は専門家でXamlはなく、属性でメソッドを定義/宣言する方法と場所を理解していません。残念ながら、この例も見つかりません。

私はいくつかのようなものを期待しています

しかし、実際には何も見つかりませんでした。あなたが知っているアイデア/例はありますか?