問題タブ [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.
java - スレッドプールに関する一連の責任
私には 3 つの段階からなる一連の責任があります。
ステージの私の実装は次のようになります。
プロセスマネージャー
インターフェイス
そして最後に RecordProcessor
ここで、ミドル ステージが完了するまでに時間がかかることがわかりました。そこで、スレッド プールの使用に興味があるので、レコードは以下に示す方法で処理されます。
ここでは、3 つのワーカー スレッドを想定しています。
質問
新しい要件を満たすために既存の CoR を正しく変更するにはどうすればよいですか?
chain-of-responsibility - 責任の連鎖の一般的な使用法?
一連の責任の設計パターンを説明するチュートリアル ビデオを見て、それがどのように機能するかは理解できたと思いますが、実際にいつ使用するかはわかりません。一連の責任の一般的な使用法にはどのようなものがありますか?
java - Chain of Responsibility の enum を降順で比較する
私が行っているプロジェクトについて質問があります。
シナリオは、4 人の乗組員が乗った宇宙船があり、各乗組員が船の特定の種類の故障に対処できるというものです。4 人の乗組員は次のとおりです。
スペース モンキー - 些細な故障を処理できる サービス ロボット - 低い故障を処理できる エンジニア - 中程度の故障を処理できる 船長 - 高/すべての故障を処理できる
これで、4 つのオブジェクトのいずれかが作成されて誤動作が発生した場合、それを処理できるかどうかを確認し、処理できない場合はチェーンを介して次の乗組員に渡すように、一連のコマンド設計パターンが実装されました。 .
それは問題ありませんでしたが、今はキャプテンが処理できる優先度の低い誤動作を取得できるようにしています。
タイプ Malfunction のオブジェクトを取る processMalfunction と呼ばれるメソッドがあります (Malfucntion オブジェクトは重大度である列挙型と誤動作の説明を与える文字列を取ります)
次に、故障は、故障を渡された乗組員と比較されます。この場合、機長が優先度の低い故障を取っている場合、彼はそれに対処することができます。
if ステートメントを実行して、現在の故障の列挙型が乗組員の能力レベルの列挙型と一致するかどうかを比較できますが、彼がより低いレベルを渡された場合に備えて、彼の能力を下回る他のレベルと比較する何らかの方法が必要です仕事。
processMalfunction(Malfunction m) メソッドのコード スニピットを次に示します。
ここに Malfunction クラスのコピーがあります
}
乗組員の列挙型と、乗組員のコンピテンシーから渡された故障列挙型を比較するための最良の方法を誰かが提案できますか?
つまり、エンジニアが LOW レベルの誤動作 ID を渡された場合、列挙型 MEDIUM、LOW、および TRIVIAL に対してチェックして、if ステートメントのように誤動作を処理できるかどうかを確認する必要があります。だから私は基本的に言う必要があります
故障レベルが乗組員の列挙能力レベル以下の場合は故障を処理し、そうでない場合はそれを渡します。
どんな助けでも大歓迎です。
敬具
J
java - 責任の連鎖: ループか次か?
一連の責任パターンを実装しています。
リストに組み合わせることができるさまざまなポリシーがあり、ポリシーのリストを処理するプロセッサがあります。各ポリシーは CustomInput を処理でき、残りのポリシーも処理するかどうかを選択できます。
ポリシーのリストをループするプロセッサーを実装し、それぞれのブール値の結果をチェックして、残りのポリシーを続行するかどうかを判断します。
私の同僚は、次のポリシーを各ポリシーに渡し、次のポリシーを呼び出す (または呼び出さない) ようにすることを提案しました (たとえば、FilterChain が行うように)。
私の質問は次のとおりです。
各ポリシーをループしてその結果を確認するよりも、2 番目のソリューション (現在処理中のポリシーに次のポリシーを渡す) に見られない利点はありますか?
java - チェーン フィルタリングの if null チェックのリファクタリングと削除
私はデータベース エントリに対していくつかのフィルタリングを行っていますが、やや醜いコードになってしまいました。これは好ましくありません。
チェーンMyFilterResolverFactory
を構築して返すクラスがあります。MyFilterResolver
そして、それの醜い、具体的な実装:
MyFilter
クラスは、ゲッター/セッターのみを持つ通常の POJO です。
これらのチェックを取り除きたいのif (something != null)
ですが、方法がわかりません。
java - 責任の連鎖: 剰余アルゴリズム?
次の方法では、次のことを試みています。
少なくとも 20 ポンドをお持ちの場合:
20ポンド札の枚数を計算する
残っているもの (剰余) を計算し、次のハンドラーに渡します。
20 ポンド未満の場合 – 次のハンドラーに電話する
注: このプログラムは ATM ディスペンサー用で、ユーザーが必要とするもの (金額) に応じて紙幣 (20、10、5) を分配します。
以下はこれまでの私の解決策です。アルゴリズムを修正するには助けが必要です