問題タブ [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 投票する
3 に答える
1408 参照

domain-driven-design - 集約ルートのファクトリ メソッド シグネチャ

集約ルートであるエンティティをインスタンス化するファクトリ メソッドを作成したいと考えています。

メソッドは、集約された子エンティティと値をインスタンス化されたオブジェクトとして受け入れる必要がありますか、それともプリミティブ型のみを受け入れる必要がありますか?

たとえば、Processor オブジェクトと Memory オブジェクトで構成されるエンティティ Computer がある場合、ファクトリ メソッドは次の形式を取る必要があります。

また

それは好みの問題ですか、それとも深刻な考慮事項はありますか?

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

c# - これは優れたファクトリメソッドの実装ですか?

厳密に分離されたインターフェースを必要とするモジュールに取り組んでいます。具体的には、ルートオブジェクト(データソース)をインスタンス化した後、ユーザーはインターフェイスを介してオブジェクトモデルと対話することのみを想定しています。これらのインターフェイスを実装するインスタンスを提供するための実際のファクトリオブジェクト(プロバイダーと呼んでいます)がありますが、プロバイダーを取得するのが面倒です。そのために、データソースにいくつかのメソッドを提供しました。

簡略化するために、その場でいくつかの詳細を変更しました(たとえば、このコードスニペットには、作成された実装インスタンスに渡されるパラメーターが含まれていません)。これは、C#でファクトリメソッドを実装するための優れた一般的なアプローチですか?

0 投票する
7 に答える
544 参照

language-agnostic - Factory Methodでやりすぎですか?

当社のコア製品の一部は、さまざまなページ ウィジェットを利用する Web サイト CMS です。これらのウィジェットは、コンテンツの表示、製品の一覧表示、イベント登録の処理などを担当します。各ウィジェットは、基本ウィジェット クラスから派生したクラスによって表されます。ページをレンダリングするとき、サーバーはデータベースからページのウィジェットを取得し、正しいクラスのインスタンスを作成します。ファクトリーメソッドですよね?

とにかく、これで問題ありませんが、時間の経過とともにウィジェットの種類の数が約 50 に増加したため、ファクトリ メソッドはかなり長くなります。新しいタイプのウィジェットを作成するたびに、メソッドにさらに数行追加しますが、これは最善の方法ではないかもしれないという小さな警告が頭の中で鳴り響きます。私はそのアラームを無視する傾向がありますが、大きくなっています。

それで、私はそれを間違っていますか?このシナリオを処理するより良い方法はありますか?

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

design-patterns - Factory Method パターンは Open/Closed 原則に違反していますか?

Factory Method パターン(Factory または Abstract Factory パターンと混同しないでください) は、Open/Closed の原則に違反していますか?

更新: 明確にするために、具象クラスに静的ファクトリ メソッドがあるシナリオについて言及しています。例 (これは FMP のウィキペディアのページからのものです):

プライベート コンストラクターは、クラスのサブクラス化、つまり拡張を妨げていませんか?

新しいファクトリ メソッドをサポートするためにクラスを変更する必要はありませんか? たとえば、クラスが最初に fromCartesian しかなく、後で fromPolar が必要になった場合、これをサポートするためにクラスを変更する必要はありませんでしたか?

これらは両方とも Open/Closed に違反していませんか?

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

c# - 「製品」の抽象メソッド-ファクトリメソッドC#

5つのWebサービス(加算、マイナス、除算、乗算、比較)を使用するためにC#で記述された単純なクラスライブラリ(COM +サービス)があります。

抽象製品クラスと抽象ファクトリクラスを作成しました。WSのコードという名前の抽象的な製品:

ご覧のとおり、サブクラスの1つがWSを継承する場合、両方のメソッドをオーバーライドする必要があります。これは、一部のサブクラスでは役に立たない場合があります。たとえば、 CompareはCalculate()メソッドを必要としません。

新しいCompareWSオブジェクトをインスタンス化するために、クライアントクラスは、WSオブジェクトタイプを返すCreateWS()メソッドを呼び出します。

ただし、Compare()がWSで定義されていない場合、Compare()メソッドを呼び出すことはできません。これは、クライアントがCompareWSオブジェクトではなくWSタイプのオブジェクトを使用するためです。

これは2つのメソッドの例にすぎませんが、さらにメソッドがある場合はどうなりますか?WSクラスですべてのメソッドを抽象として定義するのはばかげていますか?

私の質問は、WSのすべてのサブクラスに共通の抽象メソッドを定義したいのに対し、ファクトリがWSオブジェクトタイプを作成すると、サブクラスのすべてのメソッドを呼び出すことができます(WSのオーバーライドされたメソッドとサブクラスのメソッド)。これはどのようにすればよいですか?

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

vb.net - ジェネリックコンストラクターを作成するにはどうすればよいですか? (つまり、BaseClass.FromXml( )

これをどう説明したらよいかわかりませんが、FromXml という共有 (ファクトリ) 関数を含む基本クラスを作成しようとしています。この関数で適切な型のオブジェクトをインスタンス化し、XmlDocument を介して入力する必要があります。

たとえば、次のようなものがあるとします。

私はこのようなことをしたいと思います:

これは可能ですか?

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

.net - 実装ごとに異なるパラメータを必要とするファクトリメソッドがある場合はどうすればよいですか?

私はインターフェースIMessageと、次のようなさまざまなタイプのメッセージを作成するためのいくつかのメソッドを持つクラスを持っています。

このクラスにこれらのメッセージを作成するためのすべての作業を行わせたくないので、指定されたタイプに応じて(メッセージTypeA、TypeB、TypeCなどのタイプに基づく列挙)MessageCreatorFactory を生成するに委任するだけです。IMessageCreator

IMessageCreatorだから私は:TypeAMessageCreator、、、TypeBMessageCreatorの4つTypeCMessageCreatorの実装を持っていますTypeDMessageCreator

MessageParamsタイプごとに異なるパラメーターが必要なため、4つの異なるパラメーターに対して4つのプロパティを含むオブジェクトを作成する必要がありましたが、それぞれで使用されるのは一部のみであるという事実を除いて、これで問題ありませんIMessageCreator

これに代わるものはありますか?私が持っていたもう1つの考えは、Createメソッドのパラメーターとしてパラメーター配列を使用することでしたが、パラメーターが何であるかわからないため、これはさらに悪いようです。または、インターフェイスでCreateのオーバーロードをいくつか作成し、それらが特定の実装に適していない場合に例外をスローするようにします(つまり、より多くのパラメーターを必要とするメソッドを呼び出したため、他のオーバーロードの1つを呼び出す必要があります)。

これは大丈夫ですか?より良い解決策はありますか?

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

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

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

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

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

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

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

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

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

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

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

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

factory - ファクトリーメソッドに相当するSmalltalk?

ファクトリ メソッドは Smalltalk で使用されますか? もしそうなら、たとえば Java で使用する方法とは対照的に、どのように作成する必要がありますか? ありがとう。