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

c# - Activator.CreateInstance: クラスの動的インスタンス化

疎結合構造を設計しています。String で表されるコードを介して、さまざまなアセンブリ/名前空間からクラスを呼び出したいと考えています。私の設計では、クライアントのビジネス ルールはそれぞれ異なるアセンブリにあり、相互に依存していません (1 つのクライアントは 1 つの DLL に対する比率です)。そのため、1 つのクライアントのビジネス ルールを更新しても、他のクライアントには影響しません。私の注意は、Factory Design の使用とActivator.CreateInstance()メソッドの使用にあります。

これはプロジェクトのセットアップです (2+n DLL)

実際のコード

私のサンプルが機能しない理由は何ですか? また、デザインを改善するための提案はありますか? 前もって感謝します。

使ってみてはどうですか

式.ラムダ

誰でも?

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

c# - 3 層アプリケーションの DataLayer (DAL) の抽象化

以前の質問の続きとして、( https://stackoverflow.com/questions/3737848/creating-a-loosely-coupled-scalable-software-architectureを参照)

私の 3 層プロジェクトでプレゼンテーション層から BLL を抽象化したように、DAL も抽象化することを提案する人がいます。これを行う方法について何か提案はありますか? BLL と DAL の間にもファクトリが必要ですか? 私はあなたの入力が必要です..ありがとう。

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

java - 静的ファクトリメソッドのジェネリック? (ジャワ)

不変のデータ構造を実装するためにファクトリ パターンを使用する必要がある割り当てがありますが、問題は、抽象クラスがジェネリックであり、静的メソッドがジェネリック型への参照を作成することで問題が発生することです。私の割り当てでは、静的メソッドを使用する必要があるため、パニックになり始めています。ヘルプ/提案はありますか? EDITはいくつかのサンプル コードを追加しました。これは、教授が私たちに署名を与えたメソッドの 1 つの仕様です。

ExampleClass.method1 : ExampleClass, T -> ExampleClass

ExampleClass.method2 : ExampleClass - > T

私がこれらのように持っている方法は両方とも、日食で問題を引き起こしています。

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

python - 動的な基本クラスとファクトリ

私は次のコードを持っています:

これで、ファクトリでEntityBaseのすべてのサブクラスを取得し、「SMTH」の具体的なサブクラスを見つけて作成できます。

これは有効なアプローチですか、それとも私は何かを誤解して間違っているのでしょうか?

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

.net - このシナリオで Factory パターンを使用できますか?

このシナリオで Factory パターンを使用できるかどうか、またどのように使用できるか疑問に思っていました。

私は次のクラスを持っています...

..など...

そして、次のようなファクトリメソッドを介してインスタンスを作成できるかどうか疑問に思っていました...

これは可能ですか/ここで正しい軌道に乗っていますか?

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

python - Python-ファクトリ関数に関する質問

より高いレベルの抽象化クラスへのサービスとして登録する一連のクラスがあります。高レベルクラスには、 init argsなどに基づいて低レベルクラスを取得する関数があります。これは凶暴に聞こえますか?また、これは何と呼ばれていますか?私はそれをファクトリー関数/クラスと呼んでいますが、実際にはわかりません(これにより、Googleのベストプラクティスが難しくなります)。

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

c# - ファクトリを使用した動的継承

私はこれに対する答えを知っていると思いますが、誰かがきちんとした解決策を持っていることを願っています. 現在、2 種類のドロップダウン コントロール (Telerik と .Net) を使用しています。これらを 1 つのコントロールに結合したいと考えていますが、ユーザー フレンドリーなデザインに苦労しています。

理想的には、コントロールは、継承するコントロールの種類を決定するために、"SimpleBox" などの bool プロパティを使用してデザイン ファイルに作成されます。インスタンス化はコード ビハインド デザイン ファイルで生成され、コンストラクターはベースを動的にロードします (これは不可能です)。簡単な解決策は、IDropDown インターフェイスを作成し、ファクトリに正しいインターフェイスを作成させることです。これに関する唯一の実際の問題は、インスタンス化を毎回手動で作成する必要があるという事実です。これは面倒であり、プロセスをまったくスピードアップしません。

直接可能ではありませんが、bool プロパティに基づいて、ベースを設定するためにオブジェクト コンストラクター内で実行されるファクトリに沿ったソリューションを探しています。

乾杯

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

java - ソケットベースのメッセージ ファクトリ

入力ストリームからヘッダーを読み取り、メッセージヘッダーで定義されたタイプに基づいて適切なメッセージタイプを作成する基本的なメッセージファクトリを実装するためのアイデアを探しています。

だから私は次のようなものを持っています(大まかに..そして、より良いパラダイムがここに提示されている場合、私は喜んでデザインを変更します)

そして私は本質的にこのようなことをしたい:

このスキームは機能しますが、どうにかして Map と Interface を使用するより良い方法があると思います...

しかし、メッセージを使用したいときはいつでも、instanceof を使用して正しいサブクラスにキャストする必要があります。

3番目の(より良い?)オプションはありますか?テンプレートを使用してこれを実現する方法があるかもしれません。どんな助けでも大歓迎です。ありがとう

編集:メッセージを関数に「ディスパッチ」したいことに注意することが重要だと思います。だから本質的に私は本当にこれをしたい:

なので、工場と発送を組み合わせたパターンが最適です。

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

python - オブジェクトジェネレータパターン

かなり複雑なオブジェクトを表すクラスがあります。オブジェクトは、インクリメンタルビルド、さまざまな形式のテキスト文字列の解析、バイナリファイルの分析など、さまざまな方法で作成できます。これまでの私の戦略は次のとおりです。

  • コンストラクター(__init__私の場合は)にすべての内部変数を初期化してもらいますNone

  • オブジェクトにデータを入力するためのさまざまなメンバー関数を提供します

  • これらの関数に、変更された新しいオブジェクトを呼び出し元に返してもらいます。sd = SuperDuper().fromString(s)

例えば:

問題は、クラスが非常に大きくなることです。残念ながら、私はOOPパターンの設計に精通していませんが、この問題にはもっとエレガントな解決策があると思います。ジェネレーター関数をクラスから除外していますか(それは良い考えにfromString(self, s)なりますか?superDuperFromString(s)

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

c++ - Factory クラスの典型的な C++ 実装には欠陥がありますか?

C++ でファクトリ クラスを実装する必要があるのですが、それについて考えていたときに、解決できない大きな問題が 1 つ見つかり、周りのファクトリ実装の例はすべて同じように欠陥があることがわかりました。私が悪いのかもしれませんが、理由を教えてください。

したがって、ここに単純な「典型的な」ファクトリ実装があります。これにより、Factory クラスを変更せずに新しいオブジェクトを登録できます。

わかりました、このコードは派手に見えて機能しますが、ここに来るのは次のとおりです。

C++ 標準では、グローバル (静的) 変数を定義する順序を定義できません。

ここに3つの静的変数があります

ポインターは、Apple(または Banana)::registered 変数のFactory::factoryに NULL に定義する必要があります。そうしないと、メソッドが初期化されていない値で動作し、予期しない動作をします。Factory::instance

それで、私はここに来ていないのですか?コードは偶然だけで本当に動いているのでしょうか? もしそうなら、どうすれば問題を解決できますか?