問題タブ [factory-pattern]

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 投票する
2 に答える
200 参照

php - PHPでファクトリクラスを作成することは可能ですか?

Java の BeanFactory のように:

BeanFactory 自体がそのコンストラクターを呼び出すことによって Bean を直接作成する (Java コードが new を呼び出すのと同じ) より一般的なケースでは、class 属性は、構築される Bean のクラスを指定します。BeanFactory が静的な、いわゆるファクトリ メソッドをクラスで呼び出して Bean を作成する、あまり一般的ではないケースでは、class 属性は静的ファクトリ メソッドを含む実際のクラスを指定します。

注:それはファクトリメソッドではありません

任意の$instanceクラス インスタンスを動的に指定できます

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

c# - どのような場合に、静的関数の代わりにファクトリ クラスを使用するのが理にかなっていますか?

現在、ABC オブジェクトを作成する単一のメソッドを持つ ABCFactory クラスを作成しました。考えてみると、ファクトリを持つ代わりに、ABC メソッドで静的メソッドを作成することもできます。この変更の長所と短所は何ですか? それは同じにつながりませんか?他のクラスが ABC を継承することはないと思いますが、わかりません!

ありがとう

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

java - Javaでファクトリパターンを拡張する

ファクトリパターンを使用して、インスタンス化されたクラスがMultipleChoice、TrueFalseQuestionなどのようなQuestionTypeFactoryを作成しようとしています。

ファクトリコードは次のようになります

これは今のところ問題なく動作します。別の質問タイプを追加したい場合は、ファクトリクラスを変更する必要がありますが、変更したくありません。

新しい質問タイプを追加するときにファクトリのコードを変更する必要がないように、各質問クラスがファクトリに登録されるように設定するにはどうすればよいですか?私はJavaに少し慣れていないので、これを行う方法がわかりません。

編集

追加情報

すべての質問クラスはIQuestionインターフェースを実装しています。私は次のようなメソッドを実装する方法を探しています

これにより、クラスの静的ブロックからこのメソッドを呼び出すことができるため、新しい質問タイプを追加するときに、質問ファクトリでコードを変更または追加する必要がなくなります。現在の実装を汎用化するために変更する必要があることはわかっています。上で書いた方法が構文的に引数の点で正しいかどうかはわかりませんが、概念的には何が欲しいかを示しています。

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

java - ファクトリ メソッドの実装

SOの「ファクトリーメソッド」ページを調べていて、このリンクに出くわしました。そしてこのコメント。この例はバリアントのように見え、元の方法で実装することを考えていました: インスタンス化をサブクラスに任せる...

これが私の試みです。次のコードは、リンクで指定されている例の Factory パターンを実装していますか? これをリファクタリングする必要があるかどうかを検証して提案してください。

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

validation - 検証のために集約ファクトリから仕様を呼び出すことは問題ありませんか、それともその検証呼び出しは単体テスト(DDD)に属しますか?

集約ルートを作成および検証するためのファクトリと一連の仕様を作成しました。現在、工場の製品の仕様と呼ばれる工場のテストがいくつかありますが、それで十分かどうか疑問に思います。設計の観点からは、工場は製品の仕様に密接に関連しているため、それらを結合する方がよい場合があります。

集約ルート製品の仕様が作成ではなく検証に使用されている場合、それを工場内から呼び出すことは理にかなっていますか?

それとも、単体テストで十分ですか?

0 投票する
5 に答える
480 参照

factory-pattern - 工場のパターンに関する神話

これはしばらくの間私を悩ませてきましたが、これが神話であるかどうかはわかりません.

ファクトリ パターンを使用すると、クラスの依存関係を追加する手間が軽減されるようです。

例えば、ある本にこんなのがあります。

Order という名前のクラスがあるとします。最初は何にも依存していませんでした。したがって、ファクトリを使用して Order オブジェクトを作成する必要はなく、単純な new を使用してオブジェクトをインスタンス化しました。ただし、Customer に関連付けて Order を作成する必要があるという要件があります。この追加パラメーターを追加するには、何百万もの場所を変更する必要があります。Order クラスのファクトリを定義していれば、同じ苦労をせずに新しい要件を満たすことができたでしょう。

これは、コンストラクターに追加のパラメーターを追加するのと同じ苦痛ではないのはなぜですか? つまり、ファクトリに追加の引数を提供する必要があり、それは何百万もの場所でも使用されていますよね?

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

java - 抽象ファクトリ パターンはいつ使用するのですか?

抽象ファクトリ パターンを使用する必要がある場合を知りたいです。

ここに例がありますが、必要かどうか知りたいです。

UML

上記は抽象ファクトリのパターンで、クラスメートが推奨しています。以下は私自身の実装です。パターンを使用する必要はないと思います。

そして、以下はいくつかのコアコードです:

Test.properties の内容はたった 1 行です。

それで、このスーツが必要かどうかを教えてくれる人はいますか?


-------------------実際のスーツを説明するために以下を追加します--------------

Dao の例を使用するのは、それが一般的であり、誰もが知っているからです。

実は、私が今取り組んでいることはDAOとは関係なく、Webを構築する仕事をしています

サービス、Web サービスには、ファイルを他の形式に変更するためのいくつかのアルゴリズムが含まれています。

たとえば、net.CreatePDF、net.CreateWord などで、getAlgorithms と doProcess の 2 つのインターフェイスをクライアントに公開します。

getAlogrithoms はすべてのアルゴリズムの ID を返します。各 ID は対応するアルゴリズムに関連付けられます。

doProcess メソッドを呼び出すユーザーは、必要なアルゴリズム ID も提供します。

すべてのアルゴリズムは、run() メソッドを定義する AbstractAlgorithm を拡張します。

私はすべてのアルゴリズムを格納するために AlogrithmsRepository を使用します (から

Web によるアルゴリズムの具体的な Java クラスを構成するプロパティ ファイル

つまり、Web サービスによって公開されるインターフェイス DoProcess は

具体的なアルゴリズムによって実行されます。

簡単な例を挙げることができます: 1) ユーザーは getAlgorithms リクエストを送信します:

次に、ユーザーは xml に埋め込まれたアルゴリズムのリストを取得します。

2) ユーザーは次の方法で DoProcess をサーバーに送信します。

サーバーがこのタイプのリクエストを受け取ると、AlgorithmRepostory から「algorithm」パラメーター (このリクエストでは pdf) に従って具体的なアルゴリズム インスタンスを取得します。そしてメソッドを呼び出します:

その後、pdf ファイルがユーザーに送信されます。

ところで、この例では、各アルゴリズムは sqlDao、AccessDao に似ています。画像は次のとおりです。

デザインイメージ

さて、AlgorithmRepostory は Abstract Factory を使用する必要がありますか?

0 投票する
4 に答える
373 参照

c++ - ファクトリメソッドは私の問題に対して適切な設計ですか?

これが私の問題であり、C ++でファクトリメソッドを使用することを検討していますが、あなたの意見は何ですか?

基本クラスと多くのサブクラスがあります。

TCP経由でネットワーク上のオブジェクトを転送する必要があります。

最初の側でオブジェクトを作成し、このオブジェクトを使用してバイト配列のTCPメッセージを作成し、それを反対側に送信します。

反対側では、TCPメッセージを分解し、オブジェクトを作成して、このオブジェクトをポリモーフィックキューに追加します。

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

java - 疑似後方ビルダー パターン?

従来のコードベースには、あまりにも多くのフィールド/責任を持つ非常に大きなクラスがあります。これが Pizza オブジェクトであると想像してください。

次のような非常に詳細なフィールドがあります。

  • ペパロニ
  • ソーセージ
  • hasBellPeppers

これらの 3 つのフィールドが真である場合、最高のピザがあることを私は知っています。ただし、このクラスは拡張や変更に対してオープンではないため、PizzaType や isSupreme() などを追加することはできません。コードベース全体の人々は、同じif(a && b && c) then isSupreme)ロジックをいたるところに複製しています。この問題はかなりの数の概念で発生するため、このオブジェクトを多くのサブオブジェクトに分解する方法を探しています。たとえば、疑似後方ビルダー パターンです。

これは正しいアプローチですか?このパターンはすでに存在しますか?

0 投票する
4 に答える
692 参照

c# - コンストラクターまたはメソッドファクトリパターンを使用する方が良いですか?

BitmapZoneというBitmapクラスのラッパークラスがあります。

WIDTH x HEIGHTビットマップ画像があると仮定すると、このラッパークラスは、元のビットマップではなく、他のメソッド/クラス自体に送信できるようにする目的を果たす必要があります。そうすれば、ユーザーが画像をどのように処理できるか、または許可されないかをより適切に制御できます(また、メソッド/クラスごとに送信するためにビットマップを何度もコピーする必要はありません)。

私の質問は、すべてのBitmapZoneがビットマップから作成されていることを知っているので、何が好ましいと思いますか?

コンストラクタ構文:次のようなもの

ファクトリメソッドパターン:

ファクトリメソッドパターン:

他の?なんで?

ありがとう