問題タブ [chain-of-responsibility]

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

design-patterns - デザイン パターン 責任の連鎖 vs デコレーター

Chain of Responsibility パターンと Decorator パターンの違い..?

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

design-patterns - 責任連鎖設計パターン - regd

このパターンに関するいくつかの質問を見てきましたが、この設計パターンについてもっと深く理解しようとしています。この点に関するリソース、このパターンを使用する傾向があるシナリオと避けるべきシナリオに関する専門家の解説、およびいくつかの実例は、この点で非常に役立ちます。私はCORタイプが何であるかを探しているのではなく、専門家からの高度な解説を探しています. これは、次回このパターンをより責任を持って適用するのに大いに役立ちます。

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

design-patterns - 特殊化に基づいて多数のハンドラーのうち 1 つのハンドラーのみが動作するパターン

いくつかのコードを書き直して、いくつかの結合の問題を解決し、将来の変更を容易にしようとしています。

現在、状況に応じて適切な実装を選択する基本クラスに静的ファクトリ メソッドがあります。決定は、専門の程度に基づいています。

タイプ A と B はどちらもこれを処理できますが、B はこの状況のた​​めに特別に設計されており、正しい選択です。

したがって、基本クラスはすべての実装と密接に結合されており、このメソッドは、新しい特殊な実装が作成されたときに書き直す必要があります。

Chain of Responsibilityパターンを使用して、この結合を断ち切ることを考えています。ただし、最も適切な実装が確実に実行されるようにする方法がわかりません。この決定を実装に委ねると、同じ結合の問題が発生せずに特殊化の順序でクエリが実行されることを保証できません。

このような状況を処理するためのパターンや方法はありますか? (私の最善の推測では、展開を妨げるでしょう。誰もが「そうです、それがそれを行う唯一の方法です!」と言わないように、私はそれを後ろのポケットに入れておきます。)

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

c++ - コンストラクターFoo::FooはFooへの参照を受け取りますが、コピーコンストラクターは受け取りません

コピーできないクラスがFooあり、そのコンストラクターの1つがたまたまへの参照を受け取ったとしFooます。

コンパイラーは、これがコピーコンストラクターであると見なしますが、コピーとはまったく関係のないことを行います(したがって、代入演算子は無効になります)。

この方法でコンストラクターを定義することに危険はありますか、またはその署名を人為的に変更する必要がありますか?たとえば、参照の代わりにポインターを使用するか、必須のダミーパラメーターを追加しますか?

ここにいくつかのコンテキストがあります(おそらく私の質問を理解/回答する必要はありません)。

自分で作成したクラスライブラリがあります。これは、ユーザーコードと別のライブラリ間の接続として機能します。もう1つのライブラリは、簡潔にするためにfrobnicateと呼ぶサービスを提供します。ユーザーコードは次のようになります。

ユーザーオブジェクトの階層をサポートしたいと思います。各オブジェクトは別の(その親)に含まれていますが、他のすべてのオブジェクトを含むいくつか(私の場合は5)のトップレベルオブジェクトがあります。

各オブジェクトにはログファイルがあります。各呼び出しを複数のログファイルに記録し、最上位オブジェクトまで包含階層を上に配置したいと思います。

私はそれをこのように実装しました:

0 投票する
6 に答える
13023 参照

design-patterns - 「責任の連鎖」パターンと「戦略」パターンの違いは何ですか?

数日前にSOでここで尋ねた別の質問のために、私はこの質問を提起しています。
特定の問題を解決する必要がありましたが、2 つの返信を受け取った後、2 つのパターンがその問題 (および他の同様の問題) を解決するのに役立つことに気付きました。

  1. 責任の連鎖
  2. ストラテジー

私の質問は:

これらのパターンの違いは正確には何ですか?

0 投票する
6 に答える
302 参照

c# - デザインパターン:多くのメソッドが同じ最初のステップを共有する

DoThisStepFirst()多くの方法で繰り返さないようにするのに役立つデザインパターンはありますか?

編集1:これは不自然な例です。
私の実際の実装には、パラメーターを使用したメソッドシグネチャと、各メソッドの重要な操作が含まれています。

編集2:

  • @Marc Gravellは、アスペクト指向プログラミングを提案しました。はい、それはここで私を助けるかもしれません。
  • また、Chain-of-Responsibilityパターンがここでも役立つかもしれないと考えています。

@チャーリー・マーティンはこのプログラムについてもっと知りたがっていました。これが私が実際にやろうとしていることです。

  • ' m 'コントローラーおよび' n 'コントローラーメソッドのASP.NETMVC2アプリケーションに対して実行するテストハーネスを設定しようとしています。
  • MVCアプリケーションはSessionStateと緊密に結合されています。さまざまな理由で、SessionStateをモックすることはできません。
    • そのため、メソッド内で、DoThisStepFirst()SessionStateを初期化します。
    • そして、SessionStateを初期化した後、指定されたメソッドに進みたいと思います(そのため、「Chain of Responsibility」デザインパターンを探しているのではないかと思います)。
0 投票する
2 に答える
388 参照

java - シンプルなCRUDWebサイトでStruts2とコモンズチェーンの必要性を理解する

開発プロセスに簡単なCRUDWebサイトがあり、ほぼ完了しています。コードをリファクタリングするように求められましたが、今回はStruts2commonschainを使用します。私はこのようなサイトをいくつか読みましたが、私のプロジェクトでこれら2つ(Struts2とCommonsChain)が果たす重要な役割が何であるかを正確に知ることができませんでした。また、以前に作成したコードを使用できるため、このチュートリアルのようにstrutsタグについて心配する必要はありません。

誰かが私に洞察を与えることができますか?ありがとう

注:1日前にStruts2について見始めました

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

oop - これは引き続き責任連鎖パターンと見なされますか?

私はかなり長い間デザインパターンを使用しており、それを「責任の連鎖パターン」と呼んだり参照したりしてきましたが、今では違いがあることに気づきました。そうするのは適切ではないかもしれません。したがって、私の質問は 1、「次はこのパターンのインスタンスですか、それとも別の名前にする必要がありますか?」、および 2、「従来の方法を好む理由はありますか?」です。

ソフトウェアを開発するときは、次のパターンをよく使用します。functorを定義するインターフェースがあります。このようなものです。

これらは通常、検索、フィルタリング、または処理クラスです。通常はComparatorのようなものです。通常、実装方法は機能的です (つまり、副作用がありません)。最終的に、次のようなインターフェイスの実装を作成していることに気付きました。

常にブール値であるとは限りません-私はこのパターンを変更可能なオブジェクトでも使用しました-しかし、短絡条件が常にあります(たとえば、trueを返す、文字列が空の文字列である、フラグが設定されるなど)。

基本クラスからの継承の問題が実装の詳細であることを考慮して、これまでは一般的にこれを「責任の連鎖」パターンと呼んでいました。しかし、今日、重要な違いに気付きました。チェーンに沿ったオブジェクトは、チェーンの残りの部分を中断することはできません。実装が「これは false であり、どの条件でも false になることを保証できます」と言う方法はありません (nb: でのみ短絡true)。

では、これは責任連鎖パターン以外の何かと呼ぶべきでしょうか? インスタンスにメッセージを渡す従来のアプローチよりもこのアプローチを使用する場合に考慮すべき懸念事項や問題はありますか。

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

c# - LinkedListを使用したChainofResponsibilityの実装

私はこれに頭を巻くのに苦労しています、そして誰かが私を助けてくれることを願っています。

私はChainofResponsibilityクラスを持っていますが、LinkedListクラスの派生物として実装できるかどうか(そして実装したいと思うかどうか)疑問に思っています。本質的に、Chain of Responsibilityはもちろんリンクリストですが、ここでLinkedListから派生することが本当に適切かどうかはわかりません。実装された各メソッドは、後続のメソッドで同じメソッドを呼び出すことができる必要があるためです。現在のものは失敗します。

あなたはのようなものを実装できますpublic class MyHandler : LinkedList<MyHandler>か?これは再帰的定義のように見えますが、コンパイラーはそれを問題とは見なしません。

誰かがこれについて何か洞察を持っていますか?

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

java - Chain of Responsibility Logging

私はChainHandlerと呼ばれる抽象クラスとChainHandlerの多くの実装を持っています。

他のプログラマーは、そのChainHandlerの他の実装を作成します。

私のプログラムはChainofResponsibilityデザインパターンを実装しています。

ChainHandlerの具体的な実装はそれぞれ、handleメソッドを実装します。

1つのハンドラーが「a」を処理できる場合、それを処理してチェーンを停止します。そうでない場合、「a」はチェーンの最後に到達するまで次のハンドラーに渡されます。

各具象ハンドラーに、処理できたすべての「a」のリストを持たせたい。しかし、具体的なクラスの開発者に、成功時にリストに書き込むことを忘れないようにしたくありません。

それを行うためのエレガントな方法はありますか?

私の最高のアイデアは次のとおりです。

1-handleメソッドをconcreteクラスでprotectedに変更し、ブール値を返すようにして、名前をinnerhandleに変更します。

2-抽象クラスのhandleメソッドをpublicに変更すると、innerhandleが呼び出されます。成功すると、オブジェクトがリストに追加されます。