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

c# - ファクトリ メソッドが null を返すことは問題ありませんか?

ここでベストプラクティスについて疑問に思っています。ファクトリ メソッドが何も作成できない場合に null を返すのは良い習慣ですか? 次に例を示します。

別の方法は a または何かを返すことNullCommandだと思いますが、ベストプラクティスは何ですか?

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

c# - コンストラクターでの仮想メンバー呼び出しに関する警告をファクトリメソッドパターンが引き起こすのを防ぐ方法は?

www.dofactory.comで、ファクトリパターンの実際の例を見つけましたただし、このコードは、コンストラクターでの仮想メンバー呼び出しに関する警告をReSharperで生成します。

警告の原因となるコードは次のとおりです。

消費するコードでは、次のように簡単に使用できます。

コンストラクターで仮想メンバーを呼び出すことがなぜ悪い考えであるかを理解しています(ここで説明されています)。

私の質問は、ファクトリパターンを引き続き使用するために、これをリファクタリングする方法ですが、コンストラクターで仮想メンバーを呼び出す必要はありません。

コンストラクターからへの呼び出しを削除するだけの場合CreatePages、コンシューマーはCreatePagesメソッドを明示的に呼び出す必要があります。

Resume私は、ページを含む履歴書を実際に作成するために必要なのは、新しいものを作成することだけであるという状況をはるかに好みます。

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

c# - これはまだファクトリーメソッドですか?

特別なファクトリ クラスを必要とせず、具体的なクライアントに適切なパーツをインスタンス化させたい場合はどうすればよいでしょうか。クライアントはその部分から Hello() を呼び出す必要があります。それ以外の場所では、ファクトリ メソッドを特別な作成者クラスのメソッドにすることに重点が置かれています。しかし、ここではクライアントですぐに使用できます。これはまだファクトリ メソッドのパターンであり、以下に示すように使用することは正しいですか?

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

java - valueOf() と newInstance() を選択する基準は何ですか?

オブジェクト名とオブジェクト型を文字列として含むクラス ObjectInfo があるとします (質問をするために何かを調理しているだけです)。

そして、このクラスのインスタンスを作成するための静的ファクトリ メソッドを提供したい場合、次の 2 つのメソッドのどちらが優れているか、またその理由は?

基本的に、私が聞きたいのは、いつ valueOf() と newInstance() を使用する必要があるかということです。プログラマーのコミュニティ内に何らかの慣例はありますか?

-アンキット

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

java - パラメータをSpringファクトリBeanファクトリメソッドに渡す

Spring次のように宣言されたBean があります。

私のgetSecurityHandler方法は次のようになります。

このsecurityHandlerBean はスコープ内にありますprototypegetSecurityHandlerスプリングで構築するときは、パラメータをメソッドに渡す必要があります。これは可能ですか?それに関するドキュメントが見つかりません。

0 投票する
9 に答える
109233 参照

java - デザインパターン:ファクトリvsファクトリメソッドvsアブストラクトファクトリ

ウェブサイトからデザインパターンを読んでいました

そこで、ファクトリ、ファクトリメソッド、および抽象ファクトリについて読みましたが、それらは非常に紛らわしく、定義が明確ではありません。定義によると

ファクトリ-インスタンス化ロジックをクライアントに公開せずにオブジェクトを作成し、共通のインターフェイスを介して新しく作成されたオブジェクトを参照します。ファクトリメソッドの簡略版です

ファクトリメソッド-オブジェクトを作成するためのインターフェイスを定義しますが、サブクラスにインスタンス化するクラスを決定させ、共通のインターフェイスを介して新しく作成されたオブジェクトを参照します。

抽象ファクトリ-クラスを明示的に指定せずに、関連するオブジェクトのファミリを作成するためのインターフェイスを提供します。

アブストラクトファクトリとファクトリメソッドに関する他のスタックオーバーフロースレッドも調べましたが、そこに描かれているUMLダイアグラムは、私の理解をさらに悪化させます。

誰か教えてもらえますか

  1. これらの3つのパターンは互いにどのように異なりますか?
  2. いつどちらを使用しますか?
  3. また、可能であれば、これらのパターンに関連するJavaの例はありますか?
0 投票する
1 に答える
275 参照

php - PHPオブジェクトの作成、ファクトリメソッド、および依存性注入

データベースにバインドされたオブジェクトを作成するための素晴らしいパターンを楽しみにしています。ユーザーの作成という簡単な例で自分の考えを説明します。

最初:ユーザーを作成/ロードするファクトリメソッド。ユーザー設定は、新しく作成されたインスタンスで行われます。

2番目:すぐに新しいユーザーを作成するファクトリメソッド。

3番目:静的ファクトリメソッドでファクトリクラスを使用します。

そして、私は常にこのようなことをすることができます:

もう1つは、オブジェクトを作成するためにアプリケーションで使用されるデータベースへのハンドルを提供するシングルトンを作成する必要がありますか(オブジェクト内のハンドルをハードコーディングすることなく)?

例:

だから、私の本当の質問は、最高のパターンは何ですか?これは相対的すぎる可能性があることは知っていますが、いくつかのヒントが必要です。もちろん、依存関係をオブジェクトの内部にハードコーディングするのではなく、外部に残したいと思います。

前もって感謝します。

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

java - Spring - パスのファクトリ メソッド

java.nio.file.Pathstatic method を使用して表す Bean を生成しようとしていますPaths.get(String path)。私の現在のSpringセットアップは次のようになります:

しかし、それは例外で戻ってきNo matching factory method found: factory method 'get'ます。なぜそうなのか、何か考えはありますか?

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

c# - ファクトリ メソッドとジェネリック

次のインターフェースと実装があります。

Entity Framework によってすべて異なるデータを返す複数の実装を用意する予定です。ある時点で、IRepository インターフェイスを実装するクラスのリストをユーザーに表示したいと考えています。私は次のコードでこれを行います。これは私にとってとてもうまくいきます。

ただし、指定された特定の文字列が具体的なリポジトリ タイプを返し、その上で「GetAll」メソッドを呼び出せるようにするファクトリ メソッドも作成したいと考えています。擬似コード:

(ファクトリ メソッドで具象型を指定する必要があるため、これが機能しないことはわかっています)。

ユーザーがレポートを特定のデータソースにバインドできるようにしたいので、この機能が必要です。このようにして、レポートのデータソースが (たとえば) TrendDataRepository.GetAll() メソッドにバインドされている新しいレポートを開始できます。

しかし、おそらく世界の終わりが近づいているためです ;-) または、金曜日の午後で、もうはっきりと考えることができないため、これを実現する方法がわかりません.

いくつかの指針は本当に歓迎されます。

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

php - ファクトリ メソッドでの依存性注入の適切な使用 (PHP)

オブジェクト指向の設計パターンを使用しているので、本当に理解しているかを確認したいと思います。依存性注入の重要性と、サービス コンテナー/ファクトリ オブジェクトについても理解しています。静的メソッドを介してロードされたときに依存関係を自分自身に注入し、完全な自分自身のコピーを返すことができるファクトリ メソッドのアイデアが気に入っています。オブジェクトを消費するコードがすっきりしていて気に入っています。また、テストでは、代わりに別のオブジェクトを注入できます (ファクトリ メソッドを使用せずに上書きまたはインスタンス化します。以下を参照)。

次のコードについて警鐘を鳴らすものはありますか? 私はこれを正しく理解していますか?

私にとって、これにより、コントローラーやその他のモデルでオブジェクトを作成および使用するときに多くの柔軟性が得られます。次のようにインスタンス化できます。

そして今、私のオブジェクトは私が望むように設定されています

出力:

そして、内部的に他のオブジェクトは使いやすいです

これを単体テストに使用する場合は、次のいずれかを実行できます。

また