18

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

4

2 に答える 2

26

私は通常、デコレーターを何かに「追加」するものと考えていますが、責任の連鎖は何かを処理することに似ています。

2 つのパターン (リンゴとオレンジであることに加えて) を比較すると、最大の違いは、責任の連鎖がいつでも連鎖を停止できることです。

デコレーターは、各レイヤーが常に前処理と後処理を行うレイヤー単位と考えてください。Chain of Responsibility はリンクされたリストに似ており、通常は 1 つのものが処理を処理します。

Chain of Responsibility パターンでは、複数のものがイベントを処理できますが、いつでもチェーンを終了する機会も与えられます。

于 2010-09-15T19:57:51.557 に答える
13

シナリオ:

サービス リクエスト (通常はラップトップへの管理者アクセス) を考えてみてください。これは、マネージャー、ディレクター、VP によって承認される必要があります。この場合、Decorator パターンは、各レベルに各レベルからのコメントがあるかのように動作し、最終的に出力を取得します。したがって、マネージャーは「承認されて転送されました」、Simlarly ディレクターは「承認されて転送されました」、最後に VP は「承認されました」と言うでしょう。最終的な出力は、3 つのコメントすべてを組み合わせたものになります。

注: リクエストが承認または不承認にされても、チェーンが切れることはありません。

責任の連鎖では、各段階で個人が承認または拒否する権限を持っています。いずれかのレベルでリクエストが拒否された場合、リクエストは次のレベルに進まず、代わりに結果で終了します。お役に立てれば :)

于 2016-01-11T11:54:46.627 に答える