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

c# - 抽象的な工場の設計パターン

私は会社の内部プロジェクトに取り組んでおり、プロジェクトの一部は、XML ファイルからさまざまな「タスク」を解析して、後で実行するタスクのコレクションにできるようにすることです。

Task の各タイプには多数の異なる関連フィールドがあるため、Task の各タイプを個別のクラスで表すのが最善であると判断しました。

これを行うために、抽象基本クラスを構築しました。

各タスクは、この基本クラスから継承され、渡された XmlElement から自分自身を作成し​​、自分自身をシリアル化して XmlElement に戻すために必要なコードを含んでいました。

基本的な例:

パーサーは、次のようなコードを使用してタスク コレクションを作成します。

これらはすべてうまく機能し、タスクごとに個別のクラスを持つ構造を維持しながら、基本クラスを使用してタスクを渡すことができます。

ただし、TaskFactory.CreateTask のコードには満足できません。このメソッドは XmlElement を受け取り、適切な Task クラスのインスタンスを返します。

XMLElement を解析する必要があるため、インスタンス化する子クラスを選択するために巨大な (実際のコードでは 10 ~ 15 ケース) スイッチを使用しています。このメソッドをクリーンアップするために、ここで実行できる何らかのポリモーフィック トリックがあることを願っています。

何かアドバイス?

0 投票する
18 に答える
183623 参照

design-patterns - 工場のパターン。ファクトリ メソッドを使用する場合

オブジェクト内でファクトリ クラスの代わりにファクトリ メソッドを使用することをお勧めするのはどのような場合ですか?

0 投票する
18 に答える
6844 参照

java - Javaファクトリーメソッドのリファクタリング

このコードには非常に不満な点があります:

私は複数の出口点について後悔していません - 構造は明らかです。しかし、ほぼ同一の一連の if ステートメントには満足できません。文字列からコマンドへのマップを作成することを検討しました:

...次に、リフレクションを使用して、マップからルックアップされた適切なクラスのインスタンスを作成します。ただし、概念的には洗練されていますが、これにはかなりの量の Reflection コードが含まれており、このコードを継承する人は誰でも理解できない可能性があります。ただし、そのコストは利点によって相殺される可能性があります。commandMap に値をハードコーディングするすべての行は、if ブロックとほぼ同じくらい悪臭を放ちます。

ファクトリのコンストラクターが Command のサブクラスのクラスパスをスキャンし、それらに文字列表現を照会し、それらをレパートリーに自動的に追加できれば、さらに良いでしょう。

では、これをリファクタリングするにはどうすればよいですか?

そこにあるフレームワークの中には、この種のものを無料で提供してくれるものがあると思います。私がこのようなものをそのようなフレームワークに移行する立場にないと仮定しましょう。

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

python - モジュール内の関数として、またはモジュールが作成するクラスのメソッドとして、どちらがよりPythonicで、ファクトリですか?

解析されたVEventオブジェクトとiCalendarファイルに基づいてCalendarオブジェクトを作成するPythonコードがいくつかあります。

カレンダーオブジェクトには、イベントが解析されるときにイベントを追加するメソッドがあります。

次に、ファイルオブジェクト、パス、またはURLからカレンダーを作成するファクトリ関数を作成します。

私はiCalendarpythonモジュールを使用してきました。このモジュールは、次のインスタンスを返すクラスに直接クラスメソッドとしてファクトリ関数を実装します。

私がJavaについてほとんど知らないことから、これはJavaコードの一般的なパターンですが、実際にインスタンスをインスタンス化するクラスとは異なるクラスにあるファクトリメソッドへの参照が多いようです。

問題は、これもPythonicと見なされるのかということです。または、ファクトリ関数としてモジュールレベルのメソッドを作成する方がよりPython的であると考えられますか?

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

unit-testing - MbUnitからMsTestに移行する際の質問

私たちのチームは、mbunitの使用からmstestへの切り替えを検討していますが、2つの間にいくつかの切断があるようです。

mstestを使用するときにmbunitからCombinatorialTest属性とFactory属性をシミュレートする方法を知っている人はいますか?

切り替えを行う前の唯一の障害はそれだと思います。

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

c# - Factory クラス - オブジェクトにデータを入力する必要がありますか?

オブジェクトを構築して返す Factory クラスを作成しています。私は通常、データ アクセス レイヤーですべてのデータ処理を行いますが、目的を達成できるとは思いません。私がやりたいことは、SQLDataReader を使用してデータ情報をすばやく読み取り、ファクトリから返されるオブジェクトを設定することです。これはばかげた考えですか?より良いアプローチはありますか?可能であれば、DAL から DataSet を返さない方がいいですか、それともパフォーマンスと保守性の問題ですか?

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

c# - Factory クラス - オブジェクトの保存

オブジェクトにデータを設定するファクトリ クラスがあります。オブジェクトからの保存を実装したいのですが、オブジェクトに db のものを入力したくありません。クラスを作成する Factory にデータも保存させるのはばかげていますか?

つまり、オブジェクトの .Save() メソッドで Factory.Save(myObject); を呼び出します。

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

design-patterns - ポリモーフィズム vs 継承 (問題の例)

私はまだデザインパターンに頭を悩ませようとしています.2回目は、パターンの解決策を求めているように見える同じ問題に直面しています.

複数のアカウント タイプを持つアカウント システムがあります。レストラン、ホテル、service_provider、および消費者のアカウント タイプがあります。将来的にはビジネス アカウントの種類が増えると確信しています。もちろん、グローバル管理者アカウントもあります。

そこで気になるのは、アカウント種別の切り替えをどう実装するかということです。例えば。各アカウントには 1 つ以上のプロファイルがありますが、プロファイルはアカウントの種類によって異なります。複数のタイプのアカウント (ポリモーフィズムまたは継承) を処理するには、ここでどのようなクラス関係を使用する必要がありますか?

他のプロファイルが拡張する必要がある抽象的な基本プロファイル クラスが必要なようですが、それを実装する方法がわかりません (たとえば、プロファイル タイプとアカウント タイプの間の結合テーブル?)。

また、ファクトリ パターンを実装する機会のようにも感じますが、どうすればよいかわかりません。

アイデアはありますか?

提案されたいくつかの例を提供するために編集されました:

プロファイルはアカウントの種類によって異なります。たとえば、レストラン タイプのアカウントにはメニューやワイン リストなどがあり、ホテル タイプのアカウントには部屋のタイプやアメニティがあり、消費者タイプのアカウントには個人的な好みがあります。 、母国など

問題は、これらの関係を最もよく実装する設計パターンは何かということでした。

それがより明確であることを願っています、ありがとう!

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

c++ - C++ でオブジェクトを返す

クラスからオブジェクトを返すとき、いつメモリを解放するのが適切ですか?

例、

Animal Lister のインスタンスを作成し、そこから Animal 参照を取得した場合、どこで削除すればよいですか?

ここでの問題は、AnimalLister には、作成された動物のリストを追跡する方法がないため、そのようなコードのロジックを変更して、作成されたオブジェクトを削除する方法があることです。

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

c# - Typeof に基づくファクトリまたは

別のクラスの型に基づいて派生クラスを返したい場合に、以下のコードを使用するよりエレガントな方法は何ですか。