問題タブ [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.
.net - コンストラクタのトリックへの.config?
データを監視/処理するための簡単なプロジェクトに取り組んでいます。基本的に、それは単なるモニター、スケジュール、およびプロセッサーです。モニターは、スケジュールを使用してデータ (ftp、local、imap、pop など) をチェックし、新しいデータをプロセッサに送信します。それらはすべてインターフェースを持っています。
config を使用して、各モニターが使用するスケジュール/プロセッサを構成する適切な方法を見つけようとしています。それはとても簡単です:
私が苦労しているのは、ミックスに投入された古いモニター/スケジュール/プロセッサーを構成する最良の方法は何かということです。一方では、コンストラクターのパラメーターまたはプロパティを実装できます (任意の構文を使用できます)。
別の解決策は、カスタム構成をパラメーターとして受け取る各インターフェースのファクトリーメソッドです。
私は人々が両方を使用しているのを見てきました。あなたは何を好むか?構成をコンストラクターにマッピングするときの取引のトリックはありますか?
DIがこの混乱に収まるかどうかについて、私は少し引き裂かれています. 最終的には、監視インスタンスごとのバインディングのセットになります。これは、config がカバーできるデフォルトを除いて無意味に思えます。
asp.net - ASP.NET での WebControl ファクトリの実装
サーバー コントロールを動的に作成するには、ASP.NET で従来の Factory Method パターンを実装する必要があります。
.ascx コントロールを作成する唯一の方法は、Page/UserControl クラスの LoadControl メソッドを使用することです。しかし、ファクトリをページにリンクしたり、ページ パラメータをファクトリに渡したりするのは面倒です。
そのようなコントロールを作成する別の方法を知っている人はいますか (どこかで見落としていた静的メソッドなど)。
ありがとう。
java - Java: 不変から不変への変換
私が取り組んでいるフレームワークに構文糖衣を提供する方法を考えてきました。Immitable オブジェクトのみを扱いたい。
不変オブジェクトがあり、それを変更したバージョンを作成したいとします。あなたの見解では、単一の静的ファクトリ メソッドを持つインスタンス化不可能なクラスは OO の原則を破りますか?
文字列を使用した例として:
したがって、この例から次のように書くことができます。
とても読みやすいと思います。
そのようなアプローチに対する何らかの但し書きはありますか?
c# - IoC コンテナはファクトリの使用に取って代わりますか
私は IoC コンテナーを使い始めたばかりなので、これがばかげた質問である場合は申し訳ありません。
アプリに次のようなコードがあります
これは基本的に、入力データを処理するための正しい戦略を返す単純なファクトリです。
IC コンテナーを使用すると、このようなコードを排除できますか? つまり、入力パラメーターのタイプに基づいて、ロードする具体的な実装を動的に選択できるようになりますか?
それとも私はここでコースから外れていますか?
c++ - プラグインを使用して C++ アプリケーションのデフォルトの動作を変更する
要するに、プラグインがメインアプリケーションのオブジェクトを置き換えることができるように、ファクトリー+プラグインメカニズムを設計および実装する最良の方法は何ですか.
アプリケーションを構築するためのコード ベースがあります。コード ベースは、アプリケーションの 70 ~ 95% で問題ありません。つまり、新しいアプリケーションごとに、デフォルトの動作の 5 ~ 30% を変更する必要があります (新しい機能の追加、デフォルト ロジックの変更、GUI の追加など)。
実装はプラグイン ベースです。コード ベースは EXE と DLL に組み込まれており、メインの EXE が実行されているときに、必要な機能を追加する DLL をロードします。
現在、各プラグインは次の機能を公開しています。
PluginInterface は次のように定義されています。
また、 SomeClass1/SomeClass2 にはいくつかのデフォルトの動作がありますが、プラグインによってオーバーライドおよび変更できます。
現在の実装では、新しいカスタマイズされたクラスを追加することが難しくなっています。メイン アプリケーションのすべてのクラスをプラグインから置き換えたいので、オブジェクト ファクトリを使用することは理にかなっています。
私が知っている 1 つの SDK では、次の手法が使用されています。
このアプローチに代わるものがあるのだろうか。
今説明したようなプラグイン システム/ファクトリをどのように設計および実装することをお勧めしますか?
objective-c - クラス名を引数としてココアのオブジェクトファクトリに渡すにはどうすればよいですか?
オブジェクトの小さなコレクションを追跡するために、オブジェクト ファクトリに取り組んでいます。オブジェクトはさまざまなタイプにすることができますが、それらはすべて および に応答しcreateInstance
ますreset
。NSView
オブジェクトの一部は、 や などの組み込みココア クラスから派生する必要があるため、共通の基本クラスからオブジェクトを派生させることはできませんNSWindowController
。
次のように、目的のクラス名をファクトリに渡すだけで、適切なオブジェクトのインスタンスを作成できるようにしたいと考えています。
メソッドは次のmakeObjectOfClass:
ようになります。
(CLASSNAME)className
上記の引数で行ったように、クラス名をメソッドに渡す方法はありmakeObjectOfClass:
ますか?
完全を期すために、すべてのオブジェクトを管理する理由を次に示します。を呼び出して、オブジェクトの完全なセットをワンショットでリセットできるようにしたいと考えています[factory reset];
。
java - ポリモーフィック ファクトリ / Java の getInstance()
それぞれが一意の識別子を持つ一連のオブジェクトを作成することを目指しています。その識別子を持つオブジェクトが既に存在する場合は、既存のオブジェクトを使用したいと考えています。それ以外の場合は、新しいものを作成したいと思います。ここでは汚い言葉だとわかっているので、シングルトンという言葉を使用しないようにしています...
ファクトリメソッドを使用できます:
または、別の MyClassFactory メソッドを持つこともできます。
しかし、私は MyClass をサブクラス化するつもりでした:
これ以上何もせず、MySubClass.getInstance() を呼び出すと:
... その場合、subclassObj は MySubClass ではなく、プレーンな MyClass になります。
それでも、すべてのサブクラスで getInstance() をオーバーライドするのはハックに思えます。
私が見逃しているきちんとした解決策はありますか?
それが質問の一般化されたバージョンです。回答者がそれらを求めたので、より具体的に。
このプログラムは、ソフトウェアを表すノード間の依存関係の有向グラフを生成するためのものです。サブクラスには、Java プログラム、Web サービス、ストアド SQL プロシージャ、メッセージ駆動型トリガーなどが含まれます。
したがって、各クラスはこのネットワークの「要素」であり、他のノードとの依存関係をナビゲートおよび変更するためのメソッドがあります。サブクラス間の違いはpopulate()
、適切なソースからオブジェクトをセットアップするために使用されるメソッドの実装です。
「login.java」という名前のノードが、「checkpasswd.sqlpl」に依存していることを学習したとします。
問題は、この時点で checkpasswd.sqlpl オブジェクトが存在する場合と存在しない場合があることです。
c#-3.0 - ファクトリで C# オブジェクト初期化子を使用することは可能ですか?
C# 3.0 の新しいオブジェクト初期化子を見ていて、それらを使用したいと考えています。しかし、Microsoft Unity などでそれらを使用する方法がわかりません。おそらく何か不足していますが、厳密に型指定されたプロパティ名を保持したい場合は、できるかどうかわかりません。たとえば、これを行うことができます(疑似コード)
次に、リフレクションを介して Create で何かを実行してパラメーターを初期化します...しかし、新しいオブジェクトの初期化子のように、Create レベルで強く型付けしたい場合は、どうすればよいかわかりません。
より良い方法はありますか?ありがとう
c++ - 単純な C++ オブジェクト ファクトリを設計するには?
私のアプリケーションには、1 回インスタンス化される 10 ~ 20 個のクラスがあります[*]。次に例を示します。
クラスのインスタンスは、1 つのオブジェクトに含まれています。
現在、TheManager はnew演算子を使用してオブジェクトを作成します。
私の意図は、プラグインを使用して、SomeManagerClass (または他のクラス) の実装を別のものに置き換えることができるようにすることです。実装を置き換えるには、次の 2 つの手順が必要です。
- SomeManagerClass を継承する DerivedSomeManagerClass クラスを定義する [プラグイン]
- デフォルト (SomeManagerClass) の代わりに新しいクラス (DerivedSomeManagerClass) を作成する [アプリケーション]
ある種のオブジェクト ファクトリが必要だと思いますが、作成するタイプは常に 1 つしかないため (既定の実装またはユーザー実装)、かなり単純なはずです。
今説明したような単純な工場を設計する方法について何か考えはありますか? 将来的にはさらに多くのクラスが存在する可能性があるため、拡張が容易になるはずです。
[*] 複数回発生してもかまいません。
編集: TheManager に含まれるオブジェクトが 3 つ以上あることに注意してください。
c# - C# の構造体でファクトリの使用を強制するにはどうすればよいですか
引数なしのコンストラクターの呼び出しを禁止する必要がある ac# 構造体があります。
有効なデフォルト値がなく、すべてのメンバーに有効な値が必要であるため、主にすべてのメンバーに明示的な値を強制するためにこれを行っています。
C++ ではこれは簡単です。プライベート コンストラクターを追加しますが、c# では許可されません。
上記を防ぐ方法はありますか?
ファクトリの使用を強制する必要があるため、すべてのパブリック コンストラクター呼び出しを防止することも同様に機能します。
完全な開示者: 単一の依存関係を回避するために、C# アプリは自動的に D に変換され、new Struct()
その結果がポインターになり、これが私にとって厄介なことになっています。ただし、この質問はそれにもかかわらず関連性があるため、無視してください。