問題タブ [design-patterns]

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 投票する
7 に答える
26184 参照

java - Java シングルトンと静的 - 実際のパフォーマンス上の利点はありますか?

私は CVS ブランチをマージしていますが、より大きな変更の 1 つは、静的初期化ブロックとすべての静的メソッドを持つ抽象クラスを使用したシングルトン パターンの置換です。

これは、多くの競合をマージする必要があるため、保持する価値があるものですか?

このアプリは Weblogic 8.1 (つまり JDK 1.4.2) で実行しています。


すみません、トーマス、はっきりさせてください..

HEAD バージョンには従来のシングルトン パターン (プライベート コンストラクター、getInstance() など) があります。

ブランチ バージョンにはコンストラクターがなく、「パブリック抽象クラス」であり、オブジェクトのすべてのメソッドが「静的」に変更されています。プライベート コンストラクターに存在していたコードは、静的ブロックに移動されます。

次に、クラスのすべての使用法が変更され、マージで複数の競合が発生します。

この変更が行われたいくつかのケースがあります。

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

asp.net - MVP の使用 - テスト用にイベントを適切に使用する方法

私が構築している (実際には再構築している) 大規模な ASP.NET アプリケーションで MVP パターンの使用を開始したばかりで、ビューに適用されるイベントをどのように使用すべきかを理解するのに苦労しています。

ユーザー コントロールに 2 つのドロップダウン リストがあり、一方が他方の値に依存しているとします。

インターフェイスで AutoPostBack イベントをどのように定義する必要がありますか? 次のようにユーザーコントロールによって処理されるイベントである必要があります。

または、インターフェイスでイベントを定義する必要がありますか? これが望ましいパターンである場合、処理および使用するイベントを追加するにはどうすればよいですか?

0 投票する
8 に答える
47393 参照

oop - デリゲートはどこで使用しますか?

代表者を必要とする現実世界の場所は何ですか?この方法が最善の解決策である場合、どのような状況やパターンが存在するのか興味があります。コードは必要ありません。

0 投票する
21 に答える
370963 参照

python - シングルトンを定義するシンプルでエレガントな方法はありますか?

Python でシングルトンを定義する方法はたくさんあるようです。Stack Overflow についてコンセンサス意見はありますか?

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

c++ - より一般的な訪問者パターン

私の質問が非常に長く技術的なもので申し訳ありませんが、他の人が興味を持っていることは非常に重要だと思います

一部のソフトウェアの内部構造を C++ での表現から明確に分離する方法を探していました。

boost::any クラスを使用して任意の種類の値を含めることができる汎用パラメーター クラス (後でコンテナーに格納する) があります。

私はこの種の基本クラスを(大まかに)持っています(もちろんもっとあります)

派生クラスには 2 つのレベルがあります。最初のレベルでは、型と文字列との間の変換を定義します (たとえば、ParameterInt または ParameterString)。2 番目のレベルでは、動作と実際の作成者を定義します (たとえば、ParameterInt から ParameterAnyInt と ParameterLimitedInt を派生させるか、または ParameterFilename から ParameterFilename を派生させます)。 GenericString)

実際の型に応じて、基本クラスに仮想メソッドを追加せず、奇妙なキャストを行わずに、特定のパラメーターの型に応じて動作する外部関数またはクラスを追加したい

たとえば、パラメーターの種類に応じて適切な GUI コントロールを作成したいと思います。

もちろん、RTTI を使用するか、自分で (enum と switch ケースを使用して) 実装しない限り、ここから実際のパラメーターの型を理解することはできませんが、これは正しい OOP 設計ソリューションではありません。

古典的な解決策は、ビジター デザイン パターンhttp://en.wikipedia.org/wiki/Visitor_patternです。

このパターンの問題は、どの派生型が実装されるかを前もって知る必要があることです。そのため (ウィキペディアに書かれているものと私のコードをまとめると)、次のようになります。

すべての具象型を事前に知る必要がなく、元の訪問者を派生させることなく、他の方法でこの動作を取得する解決策はありますか?


編集: ピザ博士の解決策は私が考えていたものに最も近いようですが、問題は同じであり、メソッドは実際には動的キャストに依存しています。

ビジターパターンを引き合いに出さずに、何らかの解決策を考えて、心をきれいにした方がよいのではないでしょうか。目的は、次のような機能を持つことです。

タイプに関する情報を失うことなく、「具体的な」パラメータごとに異なる動作をする

0 投票する
8 に答える
13622 参照

c# - C# では、既にイベントを使用してオブザーバー パターンが実装されていませんか?

Head First Design Patterns の本を読み、他の多くのデザイン パターンを使用した後、私は Observer パターンを理解しようとしています。これは、.NET Framework のイベントを使用して既に実装されていませんか?

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

html - css の「デザイン パターン」に関する優れたオンライン リソースは何ですか?

CSS の「デザイン パターン」に関する優れたオンライン リソースを推奨できる人はいますか?

ソフトウェアのコンテキストでのデザイン パターンは通常、OO ベースのデザイン パターンを指すことは知っていますが、より広い意味でのデザイン パターン、つまり、一般的な問題やタスクに対する一般的でクリーンなソリューションを意味します。

このようなリソースの例は、このテーブル デザインのリストです。これにより、一連の CSS テクニックを使用してテーブルの見栄えを良くする方法について、本当に知っておく必要があるすべての情報が得られます。

適切なセット ソリューションを持つことができる一般的な問題の他の例としては、div の角の丸み、非常に使いやすいフォーム レイアウトなどがあります。

0 投票する
10 に答える
20967 参照

design-patterns - ソフトウェアで使用されるデザインパターンの実際の例は何ですか

私は現在、頭から先のデザインパターンを読んでいます。この本は優れていますが、実際にこれらが実際にどのように使用されているかも見てみたいと思います。

デザインパターンの使用法の良い例を知っている場合(できればOSSプログラムで見てみましょう:)、以下にリストしてください。

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

php - PEAR DB_DataObject が実装している設計パターンは何ですか?

DB_DataObjectは、必ずしも「テーブル」クラスにビジネス ロジックを格納するとは限らないため、ActiveRecord のようには見えません。テーブル データ ゲートウェイまたは行データ ゲートウェイのように見えますが、実際にはわかりません。私が必要としているのは、DataMapper と DomainModel で使用できる優れた ORM レイヤーです。何か案は?