問題タブ [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 に答える
1152 参照

java - Java でのマルチスレッド化と例外処理による一連の責任

一連の責任のためにRestサービス呼び出しがあります。パフォーマンスを向上させるためにマルチスレッドを追加しましたが、例外を処理できません。コードサンプルを見つけてください: Rest Serviceメソッドで開始

HandlerExecutor.java:

HandlerLocator.java:

Handler.java:

BasicHandler.java

ConsoleHandler と同じように、FileHandler、FinalHandlers があります。

したがって、質問は次のとおりです。

  1. run メソッドは void を返しているので、例外がConsoleHandlerスローされた場合に例外を処理する方法はありますか?
  2. 実行された 2 番目のハンドラーが失敗した場合にロールバックする方法は?
0 投票する
1 に答える
4270 参照

java - Javaで責任の動的チェーンを実装する方法は?

ビジネス ロジックの検証に関する一連の要件があります。

  1. 検証の独立した各ステップは分離する必要があります。
  2. これらのステップの順序は、管理者が定義できます。
  3. ステップを無効にすることができます。
  4. 各検証ステップはユーザー定義ではありません。つまり、コードコンパイルされます。

そこで、テーブルからステップの順序とクラス名をロードし、Class.forName(). しかし、className をテーブルに保存するのはあまり好きではありません。これは、潜在的な問題につながる可能性があるためです (たとえば、バリデーターの名前をリファクタリングすると、コードが壊れてしまうだけです)。これが私がすることです:

ここに画像の説明を入力してください

もちろん、ソリューションが柔軟になればなるほど、ソリューションはより複雑になります。それでも、クラス名をテーブルに保存せずに上記の要件を保証する方法があるかどうか知りたいですか?

0 投票する
0 に答える
95 参照

c#-4.0 - 検証用の設計パターンはありますか?

多数の検証を行うために使用すべき適切な設計パターンはありますか?

たとえば、ファイル システム上の画像を表すアイコンを含むツールバーを含むアプリケーションがあるとします。ドキュメント上でアイコンをドラッグしています。ドラッグ アンド ドロップ操作中の検証は次のようになります。

  1. ファイルがファイルシステムに存在するかどうかを確認します
  2. ユーザーがアイコンをドラッグするアクセス権を持っているかどうかを確認します
  3. 画像をドロップするためにドキュメントが開いていることを確認してください

等々...

Chain of Responsibility または Decorator パターンを使用することを考えました。

ありがとう!

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

c# - PipeLine 処理エンジン

P1 プロセス実行、P1 出力は P2 プロセスに入力として入力されます。P2 も実行されます。P4 は、P2 と P3 がプロセスを完了したときにのみ開始する必要があります。P4 入力プロセス P3 がまだ処理されていないため、プロセスは開始されません (P2 入力は現在使用可能です)。

P4 実行プロセスをトリガーする任意の入力パラメーター トリガー メカニズム。上記の問題を解決する標準的なデザイン パターンまたはサンプル コード (C#) が必要です。

また、.net 3.5 フレームワークでプロセスを並列に実行できる標準的な方法も必要です。

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

design-patterns - 責任の連鎖

if-else書くことができ、複数のハンドラーを通過する代わりに、必要なハンドラーを見つけて、特定のハンドラーに処理を委任できるのに、なぜ CoR を使用する必要があるのか​​。

CoR は、複数のハンドラーで同じリクエストを処理するためのパイプラインとして使用されていないと思います (このように: https://github.com/RichJones22/chainOfResponsibility_cpp/blob/master/main.cpp )。では、なぜ CoR を使用するのでしょうか。

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

design-patterns - 一連の責任とキューまたはスタック内のコマンド

すべてのコマンドをコンテナにロードしてコマンドを 1 つずつ実行できるのに、責任の連鎖を使用する必要があるのはなぜですか。これにより、リクエストを連続して処理するチェーンが作成されます。ところで、特定のコマンドを削除したり、実行時に別のコマンドに置き換えたりできるため、CoR よりも優れていると思いますが、CoR の場合は、チェーン内の要素にアクセスできないため、チェーン内の何かを変更するために別のチェーンを作成する必要があります。最初の要素を除くチェーン。(実際には、これは単一の連結リストです。)

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

java - switch-statement よりも責任の連鎖を使用する理由

いくつかの検証を得たと考えてください。これらの検証は、検査対象のオブジェクトが特定のタイプである場合にのみ有効になります。switch-statement よりも責任の連鎖を使用するのはなぜですか?

責任の連鎖の例

validatorFactory は Validators のチェーンを作成します。1つのバリデータは次のようになります

switch ステートメントを使用した例

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

java - 責任の連鎖の使用

責任の連鎖パターンを使用して、場所 (緯度と経度) が離れているかどうかを確認したいと考えています。この目的のために、場所が遠くにある場合はtrue、そうでない場合はfalseになるブール値を取得しました。パターンの前 - 私のコードは次のようになりました:

責任の連鎖コードの一部 (このような 4 つのクラスを取得しました):

コードは機能しますが、「ブール値の戻り値」のためにチェーンをたどり、その後完全に戻ってこの戻り値を実行します。

私の質問: まず第一に、責任の連鎖は、この if 文を「置き換える」適切な方法ですか。そして、すべてのリターンを実行するためにチェーンを停止する方法はありますか、それともこのブール値の代わりに何を使用できますか?

ありがとう!

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

design-patterns - 責任の連鎖と有限状態マシン - 違い

私は少し電気技師でプログラマーなので、FSM の設計パターンをよく知っていると思っていました。それは:

  • のセットがありますNodes
  • プログラムがこのノードにあるとき、それぞれNodeが何をすべきかを知っています。
  • それぞれNode contains references to another chosen nodesが、どのような条件の下で、選択したものに進むべきかを知っています。
  • eventまたはafter processingノード上で、Node proceeds次に選択されたノードへ

私にはそれが非常に明確だと思いました。最近、私がステートマシンを実装していたとき、ある人が私に言ったのですが、それは実際には少し変更された責任の連鎖であり(彼が正しいかどうかはわかりません)、私がしたこと/持っていたことは次のとおりでした:

  • のセットNodes(線形またはツリー構造を表していない)
  • ノードには、どの条件でどのノードにジャンプするかを知っているオブジェクトがありました
  • 各ノードには独自の処理コンテキストがありました (コンテキストの一部はノード間で共有されていました)。

残念ながら、法的な問題により、ここにクラス図を貼り付けることはできません。


一方で、私たちは責任の連鎖を持っています。これは(私が理解しているように)次のように定義します。

  • 私たちはいくつかのItemToProcessインターフェースを持っています。
  • 私たちはいくつかのNodeインターフェースを持っています。
  • ノードは、次の1 つのノードのみへの参照を持ちます。
  • 各ノードが処理ItemToProcessし、処理された 1 つをnextNode

だから私が理解している限り:

  • を使用Chain Of Responsibilityします。ノードで1 つのアイテムを処理する (または少なくとも処理を試行する) 必要があります。
  • 一連の責任は、プロセスの連続的かつ継続的な実行を表します
  • StateMachineグラフを表すために使用します
  • 計算を実行するために使用StateMachineしますが、計算の順序または種類は、いくつかのイベントによって異なる場合があります。

これらの設計パターンの理解を確認するか、どこが間違っているかを教えてください。