問題タブ [static-factory]

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

c# - これはファクトリメソッドの作成パターンですか?

しばらくの間、ファクトリ メソッド作成パターンを使用しています。私はつい最近、次のように言われました。

理由を教えたり、解釈を与えたりせずに、私の「テック」リードによるファクトリメソッド作成パターンではありません。私は親切に説明を求めましたが、彼女は時間がないと言いました。改名するように言われました。私が間違っていれば、何年にもわたってこれを間違って実装してきたことを間違いなく受け入れるでしょう。これは、ファクトリ メソッド作成パターンを実装する方法ですか? 前もって感謝します。

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

java - 依存関係を取得する方法を選択する方法は?

オブジェクトを依存関係の作成に結び付けずに、Java オブジェクトの依存関係を取得する方法を少なくとも 3 つ見てきました。

依存性注入 - 一部のフレームワークは、外部構成に基づいて必要なオブジェクトを別のオブジェクトに注入します。例: Spring マネージド Bean

依存関係ルックアップ - クラスは、ある種のディレクトリ サービスで必要な依存関係をルックアップします。例: Java EE コンテナーでの JNDI ルックアップ

静的ファクトリ - グローバル スコープ内のオブジェクトは、オンデマンドでインスタンスを提供します。標準の Java SE API には、これらが散らばっているように見えます

どちらが状況に最も適しているかについて、どのようなガイダンスを提供できますか?

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

java - Javaで不変のシングルトンオブジェクトをキャッシュして再利用する最良の方法は何ですか?

マップでキーとして使用される一連の値を表すクラスがあります。

このクラスは不変であり、静的ファクトリ パターンを使用して、個別の値のセットごとにシングルトンにしたいと考えています。目標は、同一のオブジェクトが何度も (100 回以上) 作成されるのを防ぎ、equals メソッドを最適化することです。

このクラスの以前のインスタンスをキャッシュして再利用する最良の方法を探しています。最初に頭に浮かぶのは単純なハッシュマップですが、代替手段はありますか?

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

java - 静的ファクトリ メソッドに Enum または String を使用しますか?

ファクトリメソッドで作成する正しいオブジェクトを使用するenumStringディスパッチする方が良いですか?static

String:

enum:

今のところ、私によると:

使用する利点enum:

  • ユーザーが未処理のファクトリを呼び出すことは避けてくださいcarName

使用の欠点Enum:

enumへの変更(たとえば、 にFERRARIなる) にはクライアントでの変更が必要になるため、依存関係を増やします。ENZO_FERRARIただし、クライアント コードを再コンパイルせずにインスタンスにStringリダイレクトできます。もちろん、リダイレクト先の古い値を使用してクライアントに対して同じことを行うこともできますが、私にとっては、クライアントと互換性を持たせるために古い値を保持する必要があることを意味します...私には意味がありません.FerrariEnzo FerrarienumFERRARIENZO-FERRARI enumenum

この件についてあなたの意見はどうですか?

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

design-patterns - ファクトリパターン-CreateInstanceは静的かどうか?

これはファクトリパターンについてです。私は少し混乱しています。

createInstance()メソッドが静的である実装と、非静的であるいくつかの実装を見ました。

「スタイル」や「味」に依存していると言う人もいれば、そうではないと言う人もいます。Gang of Fourによると、ウィキペディアは非静的である必要があると述べており、 http://www.dofactory.com/Patterns/PatternFactory.aspxも非静的である必要があると述べています。

私の質問は、それがスタイルと好みに依存するのか、それとも静的な方法で実装された場合にファクトリパターンに違反するのかということです。どうしたの?

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

java - Spring 3 @Component と静的ファクトリ メソッド

オブジェクトを作成する静的ファクトリ メソッドを作成している場合、そのファクトリ クラスに '@Component' アノテーションを使用し、そのクラスの Bean を作成するために呼び出す必要がある静的ファクトリ メソッドを (いくつかのアノテーションで) 示すにはどうすればよいですか? 以下は、私が意味する疑似コードです。

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

java - 静的ファクトリ ビルダーのトラブル

不特定多数のオブジェクトを作成する必要があるため、それを行うビルダーを作成しようとしました。私のビルダーが同じ値を持つプロパティを持つすべてのオブジェクトを作成することに気付くまで、すべては順調でした。

したがって、ビルダーを呼び出すと、次のようになります。

... 2 つのオブジェクトがあり、それらのプロパティには、ビルダーが作成を要求された最後のオブジェクトの値が含まれます。

そもそも、工場ビルダーはこれに対する賢明なアプローチですか? 第二に、ビルダーは回収可能ですか?

ビルダー:

編集/修正:

価値があるので、ここに改訂されたビルダーがあります。ビルドするはずのインスタンスを適切に初期化できる別のコンストラクターが必要でした。

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

java - Java Static Factory の変換

クライアント/サーバー デスクトップ アプリケーションで。すべての永続化リクエストが並行性をサポートできるように、モデルを使用して JDBC クラスを適切にコーディングする方法について、この問題があります。i.e., multiple models want to request update to its persistence counterpart simultaneously [without atmost delay].

シナリオはこのようになります。サーバー アプリケーションにあるクラスに従います。

永続パッケージ:

コミュニケーションクラス【クライアントクラス】

メインクラス [サーバークラス]

これはクライアント/サーバー アプリケーションであるため、クライアントからの複数の要求が同時にサーバーに送られます。サーバーは、適切な応答を適切なクライアントに送信する要求を処理します。注: クライアントとサーバーの間で送信されるすべてのオブジェクトは、java.io.Serializable のインスタンスです。

この種のシナリオで のブロックを調べるとServer.ClientServer.update()、パフォーマンスの問題が発生する可能性があります。または、Intrinsic Locks. しかし、私はルールconcurrencyを守らなければならず、それが N クライアント要求のキューに混乱しないようsynchronizationにする必要があります。Server.T1Service質問は次のとおりです。

  1. に関するEffective Java - Second Editionの項目1によると、Static Factoryこれにより、Persistenceパッケージのクラス内のメソッドへの新しいクラス参照を作成できますか?
  2. Client内部の各要素List<Client>は、N 個のクライアントがmessageフィールドを同時に更新しClientObsver.update()、このオブザーバーの参照オブジェクトが親クラスの単一のインスタンスであるという同時実行の問題を形成します。メモリの問題から、T1Service の複数のインスタンスを作成することは避けていました。
  3. 『Effective Java - Second Edition』の内容を使用する場合、永続性クラスを読みやすく、インスタンス化しやすく、並行性をサポートできるように変換するにはどうすればよいでしょうか?
0 投票する
1 に答える
1862 参照

java - Builder パターンを使用してクラスのインスタンスを作成するように myBatis を構成できますか?

多くのインスタンス フィールドを持つ (Java) クラスがあります (その多くはオプションです)。すべてのフィールド (したがってクラス) を不変にしたいと考えています。そのため、クラスのインスタンスを構築するために Builder パターンを使用したいと思います。

Builder パターンを使用してクラスのインスタンスを作成するように myBatis を構成できますか? myBatis にマップを返させ、そのマップを使用してコード内のインスタンスをビルドできることはわかっています。ただし、Java Beans とコンストラクターを使用してインスタンスを作成する方法と同様に、このマッピングを構成する (または何らかの規則を使用する) 方法を探しています。

編集(例を含めるため)

次に例を示します。

次に、次のようなマッパーがあります。

最後に、マッパー インターフェイスがあります。

また、myBatis を介して静的ファクトリ メソッドを使用してインスタンスを作成できるようにしたいと考えています。例えば:

具体的には、myBatis に newInstance(String, String) を呼び出させるにはどうすればよいですか?

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

c# - 状態と工場の設計パターンを使用してステータスと検証ルールを管理する

私の最近のプロジェクトでは、そのプロパティがさまざまなユーザーによって段階的に完了するクラスがありOrder、各ユーザーは部分的に完了した注文を次のユーザーに参照するため、たとえば、BOM (Bill of Material)が指定されている場合は、生産を計画している場合は、などです。 OrderStatusOrderStatusNewStatusStatusBOMAttachedStatusStatusPlannedStatusここに画像の説明を入力

また、各ステップでいくつかの検証ルールを に適用する必要があります。たとえば、ユーザーは( ) を作成するときにOrder顧客名を指定する必要があります。OrderNewStateOrderPlannedStatus

そこで、State Design パターンを使用して状態を管理し、Factory Design パターンを使用して検証をチェックすることにしました。

ここに画像の説明を入力

そして、私が私のを保存したいとき、私はそれを設定するためにcurrentOrder呼び出します:StateFactory.CreateOrderStatus(currentOrder)Status

私の場合、この方法は正しいですか?より良い解決策はありますか?