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

design-patterns - なぜAbstractFactoryUnitは静的ポリモーフィズムではなく動的ポリモーフィズムを持っているのですか?

私は現在、最新の C++ を学習し、抽象ファクトリに焦点を当てているところです。私が理解していることから、Loki の主なアイデアの 1 つは、GoF で使用される「仮想」(ダイナミクス ポリモーフィズム) を回避することです。しかし、時々、それはまだ使用されています。抽象ファクトリの章で、AbstractFactoryUnit に「virtual」があります。http://loki-lib.cvs.sourceforge.net/loki-lib/loki/include/loki/AbstractFactory.h?view=markupこれまで読んだことから、それを回避する方法があります。http://en.wikipedia.org/wiki/Template_metaprogramming#Static_polymorphism

この場合、仮想を使用する方が効果的なのはなぜですか?

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

boost - 抽象的なファクトリ デザイン パターンを使用できるブースト ツールの組み合わせはどれですか?

私が理解していることから、boost::function、boost::factory、および std::map の組み合わせにより、オブジェクト ファクトリを作成できます。http://www.boost.org/doc/libs/1_49_0/libs/functional/factory/doc/html/index.html Loki には抽象ファクトリがありますが、何らかの理由で boost にはありません。抽象ファクトリ パターンを使用するブースト方法は何でしょうか?

私が考えることができる 1 つの方法は、製品を手動で作成するためのインターフェイスを抽象化することです。つまり、同じ作成ポリシーで製品を作成することです。

あなたの答えが静的ポリモーフィズムを使用していれば、もっとうれしいです。

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

java - xmlから抽象ファクトリパターンを使用して作成するオブジェクトを動的に選択します

これがあまり具体的でないことを願っています。

クラスを取得するためにXJCでコンパイルするXMLスキーマを作成しました。XMLは基本的に、フォームのいくつかの要素(テキストフィールド、ラベルなど)を表します。抜粋は次のとおりです。

ご覧のとおり、オブジェクトのタイプは属性xsi:typeから定義されているため、jaxbを使用してxmlをすべてアンマッシュすると、適切なクラスが自動的にインスタンス化されます。

ここで質問:オブジェクトを作成するために抽象ファクトリを実装しているので、基本的に、xmlが作成する必要があると言っているオブジェクトに応じて、ファクトリの異なるメソッドを呼び出す必要があります。私が今使っている満足のいく方法はこれです:

別の方法(スイッチ/ケースの代わりに編集)を使用したいのですが、列挙型について考えていましたが、まだ十分ではありません。また、私は反射を使いたくありません。

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

dependency-injection - 依存性注入を使用する場合、必要な初期化コードをどこに置くべきですか?

私のコンストラクターが純粋な引数からプロパティへのセッターである場合、クラスが適切に機能するために必要な他のコードをどこに置くべきかわかりません。

たとえば、JavaScript では、オブジェクトのイベントWindowMessageControllerを処理するプログラムをプログラミングしています。messagewindow

これを機能させるには、ハンドラーをどこかにアタッチする必要があります。

このようなものはどこに正しく属していますか?

  1. コンストラクターで
  2. .initialize() メソッドで - 一時的な結合を導入します
  3. WindowMessageControllerFactory.create(applicableWindow) で-非常に中心的なコードのかなり離れた場所です。これは、そのような小さなクラスでも 2 つに分割されることを意味します。
  4. コンポジションルート自体で-これを常に行うと、そのサイズが倍増します
  5. このコードを使用して、コンストラクターというメソッドを 1 つだけ持つ他のクラス WindowMessageRouter で

編集

通常、このようなコントローラーのインスタンスはアプリ内に 1 つしかないため、このケースは特殊なようです。しかし、より一般化されたケースでは、何らかの DOM要素Buttonをラップするクラスのインスタンスを作成していた場合の答えは何でしょうか? <button />突然

はるかに便利なようです。

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

c# - StructureMap で抽象ファクトリを使用する可能性

ランタイム値をコンストラクターに渡す必要があるため、IExecuter を作成するための抽象ファクトリが必要です。

可能性 #1 -静的抽象ファクトリを使用する:

可能性 #2 -抽象ファクトリをコンストラクタ パラメータとして使用します

可能性 #3 - IExecuterFactory を使用します

可能性#3では、ご覧のとおり、実装方法がわかりません。Funcのコンストラクターで再び使用できますが、抽象ファクトリー内で抽象ExecuterFactoryファクトリーを使用するため、それは一種の奇妙なことです。

コンテナーを注入する #4 の可能性もありますが、サービス ロケーターを導入するため、それはお勧めできません。

なしで抽象ファクトリを使用する方法があるかどうか自問しFunc<>ます。

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

c# - 抽象ファクトリパターンを実装するための正しいアプローチ?

古き良きado.netの方法でデータアクセス層を構築しようとしています。従来、私は単純なリポジトリパターンに従ってdalを構築していました。しかし、最近記事でこのパターンについて読んだので、今回はAbstractFactoryパターンを試してみたいと思います。

そこで、ここでは、抽象ファクトリパターンを使用してdalをコーディングしようとしています。まず、これまでに得たものについて説明しましょう。後で知りたいのは、私のアプローチがこのパターンを実装する正しい方法であるかどうか、そしてリポジトリアプローチに対する利点は何かということです。

だから私は次のクラスを書きました:

つまり、私の質問は次のとおりです。1)これは抽象ファクトリパターンの正しい実装ですか?2)何がより良くできるか?3)基本クラスから継承するさまざまなリポジトリクラスに対する利点は何ですか?

たくさんの人に感謝します。

私のコードについてさらに情報が必要な場合は教えてください。しかし、現時点ではもうありません!

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

design-patterns - 抽象ファクトリパターン

  1. C#の抽象ファクトリパターンの良い例ですか?
  2. C#の抽象ファクトリパターンの利点は何ですか?
  3. 抽象ファクトリパターンでC#ジェネリックを使用するにはどうすればよいですか?
  4. 抽象ファクトリパターンでユニットテストする方法は?
0 投票する
1 に答える
1672 参照

php - CodeIgniterモデルに使用する完全な抽象ファクトリパターン

MongoDBをデータベースとして使用しているWebサイトを作成していますが、将来的には他のストレージシステムも使用できるようにしたいので、抽象ファクトリパターンの完全な実装を使用したいと思います。完全な実装では、これを参照します。

  • 「database_factory」抽象クラス。これは、クライアントコード(コントローラー)がファクトリオブジェクトを作成するために使用する必要があります。
  • Database_factoryクラスを拡張する「mongodb_factory」クラス。

  • 一連のクエリを表す「customers」抽象クラス。

  • 「Customers」クラスを実装する「mongodb_customers」クラス。「mongodb_customers」オブジェクトは「Mongodb_factory」によって返される必要があります。

私は純粋なOOPHPでこれを行う方法を正確に知っています。しかし、CodeIgniterが提供するモデルアーキテクチャとそれをマージする方法がわかりません。

「Customers」抽象クラスを作成し、次に「Mongodb_customers」を実装するのは簡単ですが、ファクトリも利用したいと思います。

CodeIgniterでモデルが必要な場合は、「$ this-> load-> model('my_model');」を使用するだけです。そしてその関数を使用しますが、ファクトリオブジェクトを作成し、インターフェイス(抽象クラ​​ス)を介して使用する必要な具象モデルを返すようにするにはどうすればよいですか?

これを達成するチャンスはありますか?

みなさん、ありがとうございました。

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

c++ - クラス型の配列を作成する方法は?

私は単一のクラス「ベース」と、ベースから派生した数十のクラスを持っています。インデックスによって適切なクラスを作成するメソッドが必要です。このような:

そして、私はできるnew array[i];

これは C++(0x) でどのように達成できますか? 通常、Abstract Factory パターンを使用します。しかし、私はたくさんの派生クラスを持っているので、これは本当にプログラムを遅くします。

派生クラスは一度だけ使用されるため、これを使用することも教えました。

ただし、すべてのクラスが常に使用されるわけではないことを除けば、これは大量のメモリ消費につながります。

なにか提案を?

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

asp.net-mvc - ドメイン モデル内でドメイン モデルを動的に割り当てる

これは私の最初の質問であり、この問題を解決しようとしている間、何を書くべきかについて数日間悩みました。

Mark Seeman 著の Dependency Injection in .NET 本を購入し、抽象ファクトリ クラスを作成するために、それと Ninject Web サイトの例に従うように努めてきました。一般的な考え方は、フォームに質問への回答のリストが含まれているということです。回答はさまざまなタイプになる可能性があるため、ファクトリを使用して関連する回答タイプを作成しています。

エラーが発生します:

最初はパラメーターを使用してみましたが、この例では簡単にするために、すべて削除しました。エラーメッセージに示されている提案はどれも当てはまらないようです。フォームサービスと同様に、ファクトリタイプはバインドされていますが、回答値は明らかにバインドされていません。

これは私の NinjectWebCommon.cs のコードです

これは回答クラスの定義です:

と答えの値:

そして工場:

私は自分の知識を使い果たしたように感じ、同じことを何度も何度も試しているだけです。非常に単純な何かが欠けているに違いありませんが、それが何であるかわかりません。