先日、Chain Of Responsibility を調べていたところ、この例に出会いました。
基本的に、抽象ハンドラーがあり、次に具象ハンドラーがあり、それぞれが親抽象ハンドラーのハンドル メソッドを実装します。実装は、最初にこの特定のハンドラーが現在の要求を処理できるかどうかを確認するためのチェックがあり、そうでない場合は、要求を後続のハンドラーに渡すようになっています。
ここで、単純な if-else 条件付きブロックを使用して同じことを行うこともできます。上記のリンクから最初の例を取得するには、次のように変更します。
class SingleHandler
{
if(request > 0 && request <= 10)
{
// Process request
}
else if(request > 10 && request <= 20)
{
// Process request differently
}
else if(request > 20 && request <= 30)
{
// Process request differently
}
}
さて、私の質問は、この 2 つの根本的な違いは何ですか? if-else ブロックを使用してまったく同じ機能を提供できる場合、責任の連鎖を使用する必要がある特定の理由はありますか? パフォーマンス、メモリ消費、保守性、スケーラビリティに関して、どちらが優れていますか?