問題タブ [factory-pattern]

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 に答える
2792 参照

c# - asp.netのプロバイダーデザインパターン

DLLアーキテクチャ/デザインパターン/OOについてサポートが必要です。

私は現在の課題の解決策としてクラスファクトリデザインパターンについて学習しており、この時点でいくつかのフィードバックを使用できます。

ASP.NET 2.0のProfileProvider、MembershipProvider、およびRoleProviderのカスタムラッパーである3つのクラスがあります。

開発者にとって合理的にシンプルで直感的な、それぞれを呼び出す方法を実装したいと思います。効果のあるもの:

抽象クラスファクトリを使用してこれを行う方法について私が読んだ例(実際、これが進むべき道である場合)は、やや混乱を招きます(私はこのリンクを回避するために取り組んできました)。

開始方法に関するベストプラクティスに関する提案はありますか?または、さらに良いことに、イラストをコード化しますか?:)

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

design-patterns - ファクトリ、抽象ファクトリ、ファクトリメソッド

私はこれらの3つの用語について本当に混乱しています。

私の理解はそれです:

  • ファクトリパターンでは、具体的なファクトリはありません。ファクトリは、パラメータに従って新しいオブジェクトを作成します。

  • Abstract Factoryパターンでは、複数の具体的なファクトリがあります。クライアントは、さまざまな具体的なファクトリを明示的に作成する必要があります。

そうですか?

他の違いは何ですか?

さらに、ファクトリメソッドパターンとは何ですか?ファクトリパターンと同じですか?

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

c# - NinjectIOCを使用して工場を置き換える

パーサー内にファクトリメソッドがあります。基本的に、トークンをロードするときに、そのトークンのハンドラーを検索するか、デフォルトのハンドラーにドロップスルーします。私はこれをswitchととして実装しましたDictionary<string,Type>が、どちらのアプローチでも、ハンドラークラス以外の場所にマッピングを保存する必要があります。

Ninject for IOCを使用しているので、次の方法でも実行できることに気付きました。

しかし、それでは、ハンドラーが2つの場所で処理できるトークンに関する情報を保存する必要はありません。ハンドラーを装飾して、これが自動的にマップされるようにする方法はありますか?

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

java - 一部のクラスが直接インスタンス化を制限するのはなぜですか?

インスタンスを直接作成できないさまざまなクラスに遭遇しました。むしろ、他のクラスの静的メソッドまたは独自の静的メソッドからインスタンスを作成する必要があります。例えば:

また

その背後にある理由は何ですか?

次のように、インスタンスを直接作成できないのはなぜですか。

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

php - これが工場パターンのしくみですか?

Singleton と Registry のパターンは非常に単純で、すぐに理解できましたが、Factory のパターンは、まだ 100% 脳に理解してもらうことができていませんでした。今なら理解できると思います。以下にサンプル コードを書きました。確認して、これが Factory パターンの適切な使用法であるかどうかを教えてください。サンプルはPHPで...

したがって、基本的に、データベース、キャッシュ、およびセッション オブジェクトが作成され (ここには示されていません)、それらが Factory オブジェクトに追加されます。これら 3 つの依存関係のいずれかを必要とする各オブジェクトのファクトリ クラスでメソッドを構築できます。彼らも得るものを設定します。これにより、ファクトリ オブジェクトを使用せずに必要に応じて依存関係を直接注入できるため、個々のクラスをある程度移植可能にすることもできます。これは正しいと思いますか?これが正しいとすれば、これは非常に便利です


更新 # 1

これは、私がここで読んだブログ投稿http://www.potstuck.com/2009/01/08/php-dependency-injection/に基づいています。多くの人が「工場」を調べるように言い続けていますが、それについて読んだことはすべて、この記事を読むまで頭に浮かびませんでしたが、「工場」ではないように見えますか?


UPDATE # 2
ウィキペディア からhttp://en.wikipedia.org/wiki/Factory_object オブジェクト指向コンピューター プログラミングでは、ファクトリ オブジェクトは、他のオブジェクトを作成するためのオブジェクトです。これはコンストラクターの抽象化であり、シングルトン パターンなどのさまざまな割り当てスキームを実装するために使用できます。通常、ファクトリ オブジェクトには、作成できるすべての種類のオブジェクトのメソッドがあります。これらのメソッドは、オプションで、オブジェクトの作成方法を定義するパラメーターを受け取り、作成されたオブジェクトを返します。ファクトリ オブジェクトは、特定の種類のオブジェクトを取得することが、単に新しいオブジェクトを作成するよりも複雑なプロセスである場合に使用されます。ファクトリ オブジェクトは、オブジェクトのクラス (該当する場合) を動的に作成する、オブジェクト プールからクラスを返す、オブジェクトに対して複雑な構成を行う、またはその他のことを決定する場合があります。

結局のところ、これはある意味で「ファクトリーオブジェクト」なのかもしれません...

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

wcf - WCF依存性注入と抽象ファクトリ

私はこのwcfメソッドを持っています

およびビジネスルール:

profileTypeが「A」の場合、データベースから読み取られます。

profileTypeが"B"の場合、xmlファイルから読み取ります。

問題は、依存性注入コンテナを使用してそれを実装する方法ですか?

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

oop - DDD Book、Eric Evans: 「FACTORY は、作成された具体的なクラスではなく、必要なタイプに抽象化する必要があります。」とはどういう意味ですか?

Eric Evans 著 Domain Driven Design の第 6 章「ファクトリ」セクション (139 ページ) では、次のように述べられています。

「優れた FACTORY の 2 つの基本的な要件は次のとおりです。

...

「2. FACTORY は、作成された具体的なクラスではなく、必要なタイプに抽象化する必要があります。」

基本要件番号 2 に関するそのステートメントの意味を詳しく説明していただけますか。

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

factory-pattern - 工場パターン - 自動配線による質問

私は subsonic2 の生成されたクラスを使用しており、テスト用に抽象化のレイヤーを追加したいので、基本的なインターフェイスを作成しました...

これは素晴らしいことです。「拡張」クラス フォルダーを作成し、そこにクラスをドロップして、そのクラスを拡張しました ...

問題ありません。それから私は思いつきました - これらのクラスは 239 ありますが、私はそれらを手作業で作成するつもりはありません。ソフトウェアがこれを行う方法が必要であり、私は怠け者なので、次のことを調べ始めました。 IController< TCollection > を返すファクトリ パターン。これについてどうすればいいですか?より良い質問は、クラスを取得して特定のインターフェイスを使用するように依頼することで、悪意のある入札を行うためのリフレクションを取得するにはどうすればよいかということだと思います。

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

php - クラスを動的に拡張して型を変更し、親メソッドを継承するファクトリを作成するにはどうすればよいでしょうか?

私がやりたいことは、一連の属性を与えることができる静的ファクトリ関数を持ち、既知のクラスを拡張する以前に宣言されていないクラスのオブジェクトを返すことです。

基本的:

コードを書くと:

私は得る: [編集]

しかし、これを行うために必要なコマンドをどこから探し始めればよいかわかりません。私のファクトリ関数では、 $name の値が親クラスを拡張するが、それを変更しないことを何らかの方法で宣言する必要があると思います。その後、新しい $name を構築します。そうすれば、型が異なるだけで、親クラスのすべての機能を持ちます。

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

c++ - テンプレート化されたオブジェクトを作成するときの Factory Pattern の代替 - C++

CG プロジェクトにメッシュ クラスを実装したいのですが、いくつかの問題が発生しました。私がやりたいのは、実装の詳細 (特定の API へのロードなど: OpenGL、DirectX、CUDA など) をユーザーから隠す Mesh クラスです。さらに、Mesh クラスは研究プロジェクトで使用されるため、この Mesh クラスは非常に柔軟でなければなりません。

柔軟性のために、各メッシュは実際には、メッシュのいくつかの側面を記述する 1 つの位置チャネル、通常チャネルなどのチャネルのコレクションです。チャネルは、いくつかの機能が追加された std::vector のラッパーです。

実装の詳細を非表示にするために、API 固有のコードを処理する各 API (OpenGLMesh、DirectXMesh、CUDAMesh、...) の派生クラスがあります。同じことがチャネル (API へのチャネル データのロードを処理する OpenGLChannel など) にも当てはまります。メッシュは、Channel オブジェクトのファクトリとして機能します。

ただし、ここに問題があります。チャネルはテンプレート クラスであるため、createChannel はテンプレート メソッドである必要があり、テンプレート メソッドは仮想化できません。私が必要とするのは、テンプレート化されたオブジェクトを作成するためのファクトリー パターンのようなものです。同様のことをどのように達成できるかについて、誰かアドバイスがありますか?

ありがとう