問題タブ [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 に答える
18457 参照

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

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

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

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

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

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

java - Spring3.0を使用したGoogleAppEngineエンティティマネージャーの構成

いくつかの基本的なGoogleAppEngineサービスのSpring構成を作成しようとしています。特にEntityManagerFactoryとEntityManagerの場合。

JavaコードからEntityManagerFactoryを作成するには:

私はこれを次のように翻訳します:

そして、EntityManagerが必要になるたびに

しかし、以前に作成したファクトリにファクトリメソッドを適用する方法がわかりません。

誰もが知っていますか?ありがとう。

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

c# - C#での単体テストの「ファクトリメソッド」としてデリゲートを使用する

問題

状況の絵を「描いて」みましょう。

  • 私はSUTを持っています。(持っているのは良いことです:P)
  • SUTにいくつかの依存関係を注入できます。
  • メソッドでは、次のことを行います:new OtherClass(ParametersObtainedFromDependancies)。
  • OtherClassが正しく機能するために意味のあるモックオブジェクトを作成する複雑さを処理せずに、SUTでそのメソッドを単体テストしたいと思います。これは、OtherClassをテストすることを意味します。

これに対する私の解決策は、デリゲートを使用するファクトリメソッドでした。

悪い点:それは公開されています。必要に応じてオーバーライドできるオプションの依存関係と考えることができます。しかしとにかく、公衆はにおいがします。

良い点:このメソッドをオーバーライドするMyTestSUTを作成する必要はなく、SUTでモックを使用してそのメソッドをオーバーライドする必要もありません。

質問

より良い解決策はありますか?これは正しいです?

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

php - PHP 厳格な標準: このコードの何が問題なのですか?

重複の可能性:
なぜ PHP 5.2+ は抽象静的クラス メソッドを許可しないのですか?
PHP で抽象クラスから抽象関数を呼び出せないのはなぜですか?

PHP 5.3.8でこのコードを実行しています。

次のエラーが表示されます。

厳格な基準: 静的関数 Geometry::fromArray() は抽象化すべきではありません

  • このアプローチの何が問題なのですか?
  • 具象クラスにこのファクトリメソッドを強制的に実装するための実行可能な代替手段はありますか?
0 投票する
1 に答える
184 参照

c# - C#でファクトリ作成メソッド?

私はいくつかの ActiveX COM オブジェクトを提供する API に取り組んでおり、以下の警告を読みました:

「このセクションの COM オブジェクトを作成するには、ファクトリの「作成」メソッドを使用する必要があります。ファクトリ メソッドによって COM オブジェクトが作成されると、COM オブジェクトは、対応する TWS COM オブジェクト (COM オブジェクトのインスタンス) に関連付けられます。 . COM オブジェクトを TWS COM オブジェクトの別のインスタンスに渡そうとしないでください。"

これらの単語は、この ActiveX API の VB の例の一部から来ています。現在、C# を使用していますが、この規則に従うにはどうすればよいですか?

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

java - パラメータ化されたファクトリ メソッド パターン

説明は長いですが、例は非常に単純で基本的なものです。

Factory Method Pattern を使用して Reader オブジェクトを作成したいと思います。実際には、IniReader と XmlReader が両方とも Reader のサブクラスであるためです。
具象クラスの選択は、ファイルのタイプに基づいて実行時に行われ、将来的には、アプリケーションは他のファイル形式を処理する必要があります。

私の質問は次のとおりです。この単純な問題に対して、ファクトリ メソッド パターンを適用しようとするのは理にかなっていますか?

このパターンを適用しようとすると、new MyObject()呼び出しだけを含むクラスが劣化します。「シンプル」であるということは、「クライアントを壊すことなく将来的に簡単に変更できる」ことを意味する場合があります。しかし、そうではないようです。

私の非常に基本的な実装:

次に、ファクトリ メソッド パターンの中心に、抽象的な ReaderCreator があります。

およびその 2 つの具象サブクラス:

この時点で、持っているファイルを特定し、適切な ReaderCreator をインスタンス化し、適切なリーダーをインスタンス化する必要があります。
次のように、ReaderCreator 抽象にパラメーター化されたファクトリ メソッドを作成したくなります (したがって、メソッドは静的でなければなりません)。

しかし、これはパラメータ化されたファクトリ メソッドではなく、ファクトリ パターンに対する別の「ファクトリ メソッド」イディオムです。
それにもかかわらず、これはパターンの最も明白な実装のように思えます。(おそらくクライアントで) IniReaderCreator と XmlReaderCreator のどちらかを決定するメソッドを ReaderCreator に取り込んだところです。

パラメーター化されたファクトリ メソッドは、実際には何か違うものです。それは、ReaderCreator のすべてのサブクラスが、IniReader と XmlReader の間で選択する意思決定アルゴリズムを再実装すると述べているためcreateです。 )。

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

java - ファクトリ メソッド VS ファクトリ オブジェクト

私が理解しているように、Factory Method は Simple Factory で、Factory Object は Abstract Factory ですか? と:

-工場方式 (簡易工場):

ファクトリ オブジェクト (抽象ファクトリ):

?

私は正しいですか?

Factoryパターンの実現はどのくらいあり、それらの違いは何ですか?

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

c# - ジェネリック メソッドからオブジェクトをインターフェイスとして返す

1 つのインターフェイスInterfaceBaseと、そこから派生したいくつかのインターフェイスがありますInterface1, Interface2。次に、基本インターフェイスではなく、インターフェイスを実装するクラスがありInterfaceXます。

今、私はジェネリックの初心者であり、これの非常に多くの新しいアプローチが私の頭の中で大きな混乱を引き起こしました:( 。私は次のようなものを呼び出すファクトリ(静的クラス)を作成したい

これが機能しない私の(サンプル)実装です:

私が達成したいのは、アプリケーションの残りの部分からクラス (Web サービス ハンドラー) を非表示にして、軽く交換することです。クラスはシングルトンになり、ファクトリ内のディクショナリに格納されるため、ファクトリを使用したかったので、ファクトリはこのメソッドを介してアプリケーション全体にそれらを広げることができますが、インターフェイスとして..多分私は制約を正しく使用していません何か間違ったことをしていますか?私のアプローチは悪いですか?より良いものはありますか? アーキテクチャ全体を作り直す必要があるのでしょうか? アーキテクチャをよりよく示す図。工場はその中にありません

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

c#-4.0 - StructureMapインスタンスファクトリメソッド

オープンジェネリック型のインスタンスを作成するためのファクトリメソッドを登録しようとしていますMongoCollection<>。ただし、GetInstanceファクトリメソッドの代わりにMongoCollectionのコンストラクタを使用しているように見えます。

それから私はします

この行を実行するとGetInstance、ファクトリメソッド内のブレークポイントに到達することはありませんが、 StructureMapException「PluginFamilyMongoDb.Driver.MongoServerSettingsにデフォルトのインスタンスが定義されていません」というメッセージがスローされます。そのためのコンストラクターがありますが、MongoCollection構造MongoServerSettingsマップでそのコンストラクターを使用したくないので、ファクトリメソッドを使用したいと思います。

ファクトリメソッドを使用しない理由はありますか?これはバグですか?

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

objective-c - 目的のC静的メソッドで呼び出し元のクラスを検出する方法

クラスがサブクラス化されている場合にサブクラスが検出されるように、静的メソッド内から呼び出し元のクラスを検出するにはどうすればよいですか? (MakeInstance 内のコメントを参照)