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

c# - ファクトリーでコンストラクター注入をどのように実装しますか?

ファクトリ パターンを使用している場合、実行時にどのように依存関係をコンストラクターに注入しますか?

boolean、array、freetext、matrix など、さまざまな形式で Foos を作成しています。Foo のさまざまな用途が見つかると、その形式のリストが増えていきます。これが私の基本的なコア ドメインです。

IFoo は、コンシューマ コンテキスト用に装飾されています。

コンシューマーに Foo を直接インスタンス化させたくないので、強制的にファクトリーを使用させます。

それでも、彼らは特定のコンテキストのために、私の抽象ファクトリーからファクトリーを派生させる必要があります。

私は特に次のように、html コンテキストで foos を構築しています。

私の問題は、抽象的な FooFactory にあります。空の値リストを常に ArrayFooFormat に挿入しています。消費者から値リストを渡せるようにしたい。他の FooFormats については、コンシューマーから適切なコンストラクター引数を渡したいと考えています。しかし、私はパブリック API を非常にシンプルに保ちたいと考えています。BuildFoo() に大量のオーバーロードは必要ありません。

では、HtmlFooConsumer.DoSomeFoo() 内から factory.BuildFoo<T>() 呼び出しにカスタム値リストを渡すにはどうすればよいでしょうか? アイデアはありますか、スタックオーバーフローの達人ですか?

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

c++ - C++ での派生クラスの登録

編集: 回答のコメントに続くマイナーな修正 (仮想印刷; mpInstance を返す)。

任意の基本クラスから子クラスを派生できるシステムを作成しようとしています。その実装は、基本クラスの実装を置き換える必要があります。

基本クラス オブジェクトを作成および使用するすべてのオブジェクトは、オブジェクトの作成または呼び出しの方法を変更してはなりません。つまり、実際に Child クラスを作成するときでも、BaseClass.Create() を呼び出し続ける必要があります。基本クラスは、オーバーライドできることを認識していますが、それらをオーバーライドする具象クラスは認識していません。

そして、すべての Child クラスの登録を 1 か所で行うようにしたいと考えています。

これが私の実装です:

この実装を使用して、他のクラスからこれを行っている場合:

出力に「Child」が含まれることを期待しています。

このデザインどう思いますか?物事を複雑にしすぎたので、もっと簡単にできるでしょうか? また、抽象クラスから継承したテンプレートを作成してもよろしいですか?

dynamic_pointer を使用する必要がありました (それ以外の場合はコンパイルしませんでした) - 何かが間違っているというヒントですか?

ありがとうございました。

0 投票する
8 に答える
1141 参照

c++ - C++ でのファクトリと動的割り当てに関する問題

アプリケーションで最長の寿命を持つオブジェクトを構築するファクトリがあります。これらには、 (多くの可能な実装を持つ抽象クラス)に依存する型、たとえば、ClientAおよびがあるため、両方のクライアントは、メンバーとして Provider への参照を持ちます。ClientBProvider

コマンドライン引数に従って、ファクトリは の 1 つの実装を選択しProvider、それを (" new" で) 構築し、両方のクライアントのコンストラクタに渡します。

ファクトリは、アプリ全体を表すオブジェクトを返します。私の主な機能は基本的にこれです:

そして、そのbuildApp方法は基本的に次のとおりです。

そのため、実行が終了すると、プロバイダ オブジェクトを除くすべてのオブジェクトのデストラクタが呼び出されます (" new" で構築されたため)。

この設計を改善して、プロバイダーのデストラクタが確実に呼び出されるようにするにはどうすればよいですか?

編集:明確にするために、私の意図は、クライアント、プロバイダー、および App オブジェクトの両方が同じ寿命を共有することです。すべての回答の後、クライアントとプロバイダーの両方をヒープに割り当てて、 App オブジェクトに渡された参照を割り当てる必要があると思います。これは、死んだときにそれらを削除する責任があります。あなたは何を言っていますか?

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

.net - 工場パターンのアドバイスが必要です

私は自由時間に単純なデータ ストレージ プロジェクトでファクトリ パターンを使用して、ファクトリ パターンに頭を悩ませることに取り組んでいます。アイデアは、単純なデータを取得し、VB.NET の単純なファクトリ パターンを使用してデータベースに保存することです。パターン自体の基本的な理解はできていると思いますが、苦労しているのは、ファクトリ クラスをアーキテクチャにきれいに適合させる方法です。このプロジェクトには、基本的に次のような標準の 3 層アーキテクチャがあります。

プレゼンテーション

仕事

データ

一般

インターフェース

アプリケーションの設計に問題がある特定のシナリオを強調するために、例を挙げましょう。ビジネス層で、BusinessLayer.DataStorageAppName DLL に Foo というクラスを作成するとします。これには、Interfaces.DataStorageAppName DLL に存在するインターフェイス IFoo があります。単純なファクトリ パターンを使用してインターフェイス IFoo を介してクラス Foo のインスタンスを作成するには、現在、BusinessLayer.DataStorageAppName に Factory クラスを作成し、共有/静的メソッドを記述して、IFoo インターフェイスを介してインスタンスを作成します。後で、私が理解しているように、(理論上) 他に多くのことをする必要なく、この Factory クラスが返すオブジェクトを交換することができました。

要点を言えば、これは機能しますが、循環参照を回避できるように、いくつかの Factory クラスを作成することを余儀なくされています。基本的に DLL ごとに 1 つです。キャッスルウィンザーなどのサードパーティのソリューションを使用せずに、これらのファクトリクラスを実装するよりクリーンな方法はありますか?ここでは基本的な概念が欠けているようです。オブジェクトインスタンスの配布を担当するアーキテクチャで、単一の「リポジトリ」を持つことが可能であるように思われます。

前もって感謝します!

0 投票する
6 に答える
17047 参照

c++ - ファクトリ メソッドの実装 - C++

「工場」設計パターンの実装には、次のコードがあります。

でも「C++のテンプレート」を使えばもっとうまくできると聞きました。それがどのように行われ、テンプレートアプローチがこれよりも優れているかを誰でも助けることができますか?

何かご意見は

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

domain-driven-design - モデル ビュー プレゼンターおよびドメイン駆動設計プロジェクトのプレゼンターでファクトリを使用する

ドメイン駆動設計では、ファクトリを使用してドメイン レイヤーにドメイン オブジェクトを作成することをお勧めします (直接コンストラクターまたは IoC を使用するのではなく)。

しかし、プレゼンター レイヤーでドメイン オブジェクト ファクトリを使用する場合はどうでしょうか。たとえば、プレゼンターから取得したユーザー入力からドメイン オブジェクトを作成していたとします。

以下に例を示します。10 進数の設定を持つ構成ドメイン オブジェクトがあるとします。

パブリック クラスの構成: PersistantObject {

}

このオブジェクトをプレゼンター レイヤーではなくドメイン レイヤーで作成するには、これらの各 10 進数値を関数パラメーターとして渡す必要があります。扱いにくい関数定義と呼び出しを作成します。

つまり、ConfigurationService.CreateConfiguration(温度、...(x20)、重力);

おそらくより良い解決策は、構成オブジェクトをプレゼンター レイヤーに作成し、構成オブジェクトのすべての値をユーザー入力から直接割り当てて、長い関数呼び出しをスキップすることです。

構成 config = ConfigurationFactory.CreateNewConfiguration();

config.temperature = 温度;

..(x20).. = ...;

config.gravity = 重力;

ConfigurationService.SaveNewConfiguration(config);

しかし、このアプローチが間違っているかどうか疑問に思っています。なぜですか? これらのアプローチの両方が間違っている場合、ユーザー入力から長いオブジェクトを作成するための最良のアプローチは何ですか?またその理由は何ですか?

ありがとう!

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

design-patterns - ドメイン駆動設計のファクトリ パターンでインターフェイスをどのように使用しますか?

デフォルトでドメイン オブジェクト ファクトリにインターフェイスを使用することは理にかなっていますか? それとも、必要な場合にのみインターフェイスをファクトリ クラス用に予約する必要がありますか?

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

visual-studio-2008 - 検証():属性'Factory'は要素'ServiceHost'の有効な属性ではありません

私は得ています

Factory = "System.ServiceModel.Activation.WebServiceHostFactory"を.svcファイルの@Serviceディレクティブに追加した後、空のWCFサービスアプリケーションでVS2008から。コードビハインドにSystem.ServiceModel.Web参照を追加しました。

私はMSDNで読んだ内容に基づいて、完全に途方に暮れています。誰かがこれに遭遇したことがありますか?

アップデート:

Factoryは、.svcファイルのマークアップのインテリセンスで使用可能な属性としても表示されません。

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

python - Python のクラス ファクトリ

私は Python を初めて使用するので、以下のシナリオを実装するためのアドバイスが必要です。

2 つの異なるレジストラでドメインを管理するための 2 つのクラスがあります。どちらも同じインターフェースを持っています。

ドメイン名を指定すると、拡張子に基づいて正しいレジストラー クラスをロードするドメイン クラスを作成したいと考えています。

これはファクトリ関数 (以下を参照) を使用して実現できることはわかっていますが、これが最善の方法ですか、それとも OOP 機能を使用するより良い方法はありますか?