問題タブ [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.
c# - 嫌なハック (リフレクションを使用する基本クラスのファクトリ メソッド)
これは汚いことであり、私はそれを行うことに汚いと感じています:
ここにクラスNonCompoundedInterestRate
(抽象)がありCompoundedInterestRate
、抽象クラスから派生していInterestRate
ます。上記のリフレクションが機能するための適切なシグネチャで名前がNonCompoundedInterestRate
付けられた静的メソッドを持ついくつかの具体的な実装があります。ImpliedRate
リフレクションを使用して、派生クラスにあることが保証されていない静的メソッドを呼び出すと、悪臭がします。これを処理するより良い方法はありますか?
java - Spring formBackingObject、ビジネス オブジェクトの作成、およびファクトリ
Spring SimpleFormController で Business Objects を formBackingObjects として使用するための設計上の問題。
コントローラーの役割は、エンド ユーザーが新しいビジネス オブジェクトを Web アプリケーションに追加できるようにすることです。
したがって、formBackingObject(HttpServletRequest request) メソッドを介してビジネス オブジェクトを渡します。しかし、私たちは難問にぶつかりました。
新しいビジネス オブジェクトを作成するために使用しているファクトリでは、一部の属性を null にすることはできないというビジネス ルールが適用されます。しかし、エンド ユーザーが何を入力したいのかがわからないため、「必要な名前を入力してください」などの「合理的なデフォルト」を渡してきましたが、それはせいぜいハック/イッキーに思えます。
開発者は何をすべきか? これは古典的な鶏卵問題のように感じます。
すべてのビジネス オブジェクトはインターフェイスに基づいています。ビジネス オブジェクトを表すスタブを作成し、スタブを formBackingObject として渡し、フォーム送信時にスタブをファクトリに渡す必要がありますか? それとも、formBackingObject に何も渡さずに、リクエストから送信された情報を手動で収集する必要がありますか?
他の合理的なアイデア/パターンはありますか?
お時間をいただきありがとうございます。
c++ - C++ でオブジェクト リポジトリを使用してファクトリを構築しますか?
内部に保持されているオブジェクトへの参照を返す抽象インターフェイスを実装するオブジェクトを作成するためのファクトリを作成したいのですが、オブジェクトは複製されません。考え方は、log4cxx/log4j Logger クラスの設計とほとんど同じです。また、できるだけ多くの詳細をクライアントから隠したいと思います。つまり、公開された .h ファイルを表示しても、プライベート メンバーなどの実装の詳細は明らかになりません。例:
私は車輪を再発明したくないので、そのような設計のための公開されたガイドライン/サンプルコードが受け入れられたかどうか疑問に思います.タスクはかなり一般的です. 静的ファクトリ メソッド、内部のシングルトン リポジトリ、および返される型として具体的なオブジェクトへのスマート ポインター/参照を使用することを考えました。質問:
- そのような設計のためのサンプルの簡単なコードはありますか? (log4cxx のコードは複雑すぎてスケルトンとして使用できません)
Encryptor
純粋な抽象クラスで定義されたencryptor.hしか見えないと仮定して、クライアントからリポジトリを完全に隠すにはどうすればよいですか?- 戻り値の型としてスマート参照またはポインターを使用することをお勧めしますか? スマート参照の標準実装はありますか?
- 他の提案をいただければ幸いです
どうもありがとう!
php - PHP5のファクトリパターンと組み合わせたシングルトン
PHP5のファクトリメソッドパターンと組み合わせてシングルトンデザインパターンを使用するための最良の方法は何ですか?このための私の最も単純な使用シナリオは、データベースタイプごとに1回だけインスタンス化選択データベース接続です。
java - 私の工場の何が問題になっていますか?
次のようなコードがあります。
しかし、Eclipseは私に言っています。No enclosing instance of type Foo is accessible.
では、どうすればこれを機能させることができますか?
コンパイルできるかどうかを確認するために、できるだけ単純にしようとしました。
そして、私はまだ同じエラーが発生します。私は何が欠けていますか?
修繕!return new FooImpl();
行を次のように変更しましたreturn new Foo.FooImpl();
.net - .NETFrameworkのコンストラクターとファクトリ
以下は、.netFrameworkでのパターンの使用に関する記事です。以下の抜粋の太字部分がわかりません。オブジェクトの作成の詳細を変更した場合、コンストラクターの引数を変更する可能性があることを意味しますか?
フレームワークには、コンストラクターを自分で呼び出さなくても、構造体またはクラスの新しいインスタンスを取得できる場合が多くあります。System.Convertクラスには、このように機能する静的メソッドのホストが含まれています。たとえば、整数をブール値に変換するには、Convert.ToBooleanを呼び出して、整数を渡すことができます。このメソッド呼び出しの戻り値は、整数がゼロ以外の場合は「true」に設定され、それ以外の場合は「false」に設定された新しいブール値です。Convertクラスは、正しい値でブール値を作成します。他の型変換方法も同様に機能します。Int32およびDoubleのParseメソッドは、文字列のみが指定された適切な値に設定されたオブジェクトの新しいインスタンスを返します。
新しいオブジェクトインスタンスを作成するためのこの戦略は、ファクトリパターンとして知られています。オブジェクトのコンストラクターを呼び出すのではなく、オブジェクトファクトリにインスタンスの作成を依頼できます。このようにして、ファクトリクラスはオブジェクト作成の複雑さを隠すことができます(文字列からDoubleを解析する方法など)。オブジェクトの作成の詳細を変更したい場合は、ファクトリ自体を変更するだけで済みます。コンストラクターが呼び出されるコード内のすべての場所を変更する必要はありません。
差出人:http ://msdn.microsoft.com/en-us/magazine/cc188707.aspx。
c# - これは、ファクトリ パターンを利用するクラスを使用およびテストする正しい方法ですか?
私はファクトリ パターンの経験があまりなく、それが必要だと思われるシナリオに出くわしましたが、パターンを正しく実装したかどうか確信が持てず、その影響が心配です。単体テストの可読性に問題がありました。
仕事で取り組んでいるシナリオの本質を (記憶から) 近似するコード スニペットを作成しました。誰かがそれを見て、私がしたことが合理的であるかどうかを確認していただければ幸いです。
これは私がテストする必要があるクラスです:
基本的なインターフェース定義の一部を次に示します...
これが私が作った工場です。私の現在の要件では、特定のシナリオで使用する特定の Reducer MethodAReducer を追加する必要があるため、ファクトリを導入しようとしています。
これらは 2 つの実装の概算です...実装の本質は、オブジェクトが特定の状態にある場合にのみ量を削減することです。
これは私が使用しているテストフィクスチャです。私が気になったのは、ファクトリ パターンがテストでどれだけのスペースを占めているか、そしてテストの可読性をどのように低下させているように見えるかということです。私の実世界のクラスには、モックアップする必要があるいくつかの依存関係があることに注意してください。つまり、ここでのテストは、実世界のテストに必要な行よりも数行短いことを意味します。
最初のテスト
二次試験
それで、それはすべて正しく見えますか?または、ファクトリ パターンを使用するより良い方法はありますか?
factory-pattern - ファクトリはインターフェイスの実装を返すだけですか?
ファクトリはインターフェイスの実装を返すだけですか?それは仕事ですか?
c# - C#: Strategy オブジェクトの抽象ファクトリとして機能する抽象戦略基本クラス
私は、本質的に地理的な入力を使用して表形式の結果を生成する、会社用の Web ベースのツールを作成しようとしています。現在、3 つの異なるビジネス分野が私のツールを使用しており、3 種類のアウトプットを受け取ります。幸いなことに、すべての出力はマスター テーブル - 子テーブルという同じ考え方に基づいており、共通のマスター テーブルを共有しています。
残念ながら、いずれの場合も、子テーブルの関連する行には大きく異なるデータが含まれています。これが唯一の争点であるため、FetchChildData
メソッドを という別のクラスに抽出しましたDetailFinder
。その結果、私のコードは次のようになります。
PlanningFinder、OperationsFinder、および MaintenanceFinder はすべて DetailFinder のサブクラスです。
if
別のビジネス分野のサポートを追加するように依頼されたばかりで、このブロックの傾向が続くのは嫌です。私が好むのは、次のような解析メソッドを持つことです。
DetailFinder
ただし、 ifブロックをメソッドにシフトするだけでなく、各文字列を処理するサブクラス、または存在するサブクラスを知る方法について途方に暮れていParse
ます。サブクラスが自分自身を抽象に登録する方法はありDetailFinder
ますか?
actionscript-3 - ファクトリーパターン製品の保管
現在、文字列に基づいてオブジェクトを作成するために使用されている switch ステートメントがあります。抽象汎用オブジェクトを拡張する 3 種類のオブジェクトがあります。私は実際に工場のパターンを使用する必要があります。これは現在把握しています。したがって、私の問題は次のとおりです。ファクトリ パターンの柔軟性は高く評価していますが、現在、製品になる可能性のあるものをそのタイプ専用の特別な辞書に保存しています。
型が 3 つしかない場合はこれで機能しますが、ファクトリ パターンの柔軟性を利用してさらに型を追加することにした場合、型を追加するたびに特別な辞書を作成する必要があるため、それらを格納する方法が問題になります。 ...
私が考えることができる唯一の答えは、辞書をネストすることです。これはかなり遅く聞こえます。
それはおそらく実行可能な解決策ですが、よりクリーンな解決策を提案できる人はいますか? 私は AS3 で作業していますが、より一般的なソリューションを自由に提供してください。