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

java - ファクトリ メソッド、静的呼び出しを使用してファクトリからオブジェクトを取得する理由

私の理解では、ファクトリメソッドを使用しているときに、ファクトリの静的メソッドを呼び出してオブジェクトを取得していた..のように..実際にメソッドをFoo f = Factory.getObj() 呼び出す前にオブジェクトを作成する必要がないため、メソッドは静的になります。getObj目的の具体的なオブジェクトを返します。しかし、req getObj メソッドFactoryを使用してクラスのインスタンスを作成し、それを呼び出すことが一般的ではないのはなぜでしょうか? new Factory()ばかげているように聞こえるかもしれませんが、ファクトリ メソッドを static にするのが一般的なのはなぜですか?

また、静的工場と工場は2つの異なるものですか?

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

java - コンストラクタに対する静的ファクトリの不利な点

私はEffective Javaを使用しています。最初の項目は、コンストラクターに対する静的ファクトリ メソッドの説得力のある事例です。

私は最初の欠点を得ませんでした

静的ファクトリ メソッドのみを提供することの主な欠点は、パブリック コンストラクターまたはプロテクト コンストラクターを持たないクラスをサブクラス化できないことです。

静的メソッドは継承できないため、静的ファクトリ メソッドを持つクラスをサブクラス化する必要があるのはなぜですか?

誰か説明してくれませんか。

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

java - インタフェースクラス java の static ファクトリメソッド

私は効果的なJavaテキストブックを読んでいました。最初の項目は、パブリック コンストラクターの代わりに静的ファクトリ メソッドを使用することです。私の疑問は、私が指定している場合、Interfaceどのように静的ファクトリメソッドを指定できますInterfaceか? Java は 内の静的メソッドをサポートしていないためinterfaceです。テキスト ブックでは、public static factory メソッドを含むインスタンス化不可能なクラスの作成について指定されています。しかし、これらのメソッドはどのようにして実装クラスのプライベート コンストラクターにアクセスできるのでしょうか?

テキストブックには、を定義している場合Interface Type、インスタンス化できないクラスを作成しTypes、そのクラスに静的ファクトリメソッドを含めると書かれています。しかし、クラスで定義されたメソッドは、どのようTypesにして具体的な実装のプライベート コンストラクターにアクセスできますか?Interface Type

編集: - 以下の文は教科書から引用されています。その意味を説明してください

「インターフェイスは静的メソッドを持つことができないため、慣例により、 Typeという名前のインターフェイスの静的ファクトリ メソッドは、Typesという名前のインスタンス化できないクラス (項目 4) に配置されます」

編集:- Joshua Bloch による効果的な Java から取得: Item1 - 静的ファクトリ メソッド

私の質問は、静的メソッドがどのようcreateFoo()にしてプライベートコンストラクターを呼び出すことができるかということですMyFoo

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

c# - 静的ファクトリ メソッドとパブリック コンストラクター

バックグラウンド:

これが私が現在取り組んでいるもののコードです。まず、アカウントに関する情報を保持するアカウント クラスであり、ほとんどの部分でクラスのプロパティの値を変更するいくつかのメソッドを持つ基本クラスです。

次に、アカウントが作成されたときの別のクラスを用意し、これを ActiveAccount と名付けました。これには、アカウントが作成された後にのみ可能になる、アカウントに使用したいアクションのロジックのほとんどが含まれています。質問を説明するために含める必要のないクラスもあります。想像力を働かせて、これらのクラスが何をするかを想定してください。

静的ファクトリ メソッドを使用した理由は 2 つあります。1) カスタマイズ可能で拡張可能なオブジェクトの構築が必要です (たとえば、将来、アカウントを作成するための一般的な情報を提供する AccountTemplate を使用する可能性があります。AccountTemplate パラメーターを使用して、別の静的ファクトリ メソッドのオーバーロードを簡単に作成できます)、および 2 ) パラメーターなしのコンストラクターを使用すると、このオブジェクトをより簡単に XML/JSON にシリアル化できます。

質問:

しかし、Account パラメーターを受け取り、ロジックを実行し、オーバーロードで簡単に拡張できるパブリック コンストラクターを同じように簡単に作成できることに気付きました。パラメーターなしの構築を防ぎ、シリアル化を許可するために、パラメーターなしのプライベート コンストラクターを保持できます。

私はプログラミングにかなり慣れていません。私が疑問に思っているのは、上記で説明したように、パブリック コンストラクターの代わりに静的ファクトリ メソッドを使用する特定の理由があるかどうかです。そして、私がやりたいことをするための好ましい方法は何ですか?

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

asp.net-mvc - Static factory method does not return object instance in MVC Controller

We are migrating from .aspx web application to MVC app.

Below is the problem while migrating:

I have a third party dll which contains static factory method to return instance by given Interface name.

Controller code:

Here, ObjectFactory is from third party dll with definition as below (no more code details are available on GetInstance method).

GetInstance method works perfectly in .aspx application - objBus is created successfully. But the same line (Controller code) when executed in MVC controller returns objBus as null.

Please suggest what could be the problem. I guess it may be due to difference in architecture and/or page life cyle of .aspx and mvc apps. Any suggestions on the problem are greatly appreciated.

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

c# - TDD を実行するときに静的ファクトリをテストする必要がありますか?

TDD では、事前にテストされていないコードを書くことは避けるべきであることはわかっていますが、これは単純化のためにルールが破られる可能性がある場合の 1 つではないかと考えています (サードパーティ ライブラリのラッパーのテストを避けるため)。たとえば、ゲートウェイパターンなどのテスト目的)。私は現在それらをテストしていますが、次のようなものです:

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

c# - WCF サービス依存性注入と静的ファクトリ

GetNext()メソッドが呼び出されるたびにコードを返す必要があるサービスがあります。そのために、インターフェイスを実装するいくつかのコード プロバイダーがあります。ServiceHost の開始と終了の間、および各サービス呼び出しに対して、同じコード プロバイダーを使用する必要があります。各呼び出しでコード プロバイダーのインスタンスを 1 つ作成することは避けたいと思います。

IInstanceProvider と ServiceHostFactory を使用するソリューションでは、サービスの構築中にパラメーターを渡すことができます。私は WCF について詳しい知識がないため、そこで何が起こっているのかを完全には理解していなかったのかもしれません。最終的に静的ファクトリを実装し、サービスの実装で次のように使用しました。

必要に応じて、必要なコードのタイプをファクトリに渡し、構成 DB またはファイルから取得することでこれを拡張できますが、それは重要ではありません。これは、コード プロバイダーのインスタンスを 1 つだけ持つための最善の方法ですか?そうでない場合、正しい (つまり、よりエレガントで、パフォーマンスが高く、保守しやすい) ソリューションは何でしょうか? また、コード プロバイダーのインスタンスが 1 つしかないという懸念は正当なものですか?

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

java - 静的ファクトリーおよびファクトリー設計パターン

static工場と工場の設計パターンは同じですか?

Spring フレームワークでは静的ファクトリの概念が使われていると聞きました。

「static factory design pattern」を検索すると、Google の結果で factory method design pattern の詳細が表示されます。それらが同じでない場合、静的ファクトリ デザイン パターンは依存性注入にのみ使用されますか?

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

java - 有効な Java Item1 - オブジェクト作成のための静的ファクトリ メソッド

オブジェクト作成のための「静的ファクトリメソッドとコンストラクター」が議論されている効果的なJava項目1を調べていました。言及されている欠点の1つは次のとおりです。

「静的ファクトリ メソッドのみを提供することの主な欠点は、パブリックまたは保護されたコンストラクターを持たないクラスをサブクラス化できないことです。」

オブジェクト合成を継承に促進するので、これは良いとも言われています。しかし、どうしても継承が必要な場合、それは深刻な制限ではありませんか? クラスが拡張されるかどうか以前からわからないのに、オブジェクトの作成に静的ファクトリ メソッドを使用する必要があるのはなぜですか?