2016-05-18 7 views
-1

IはCOR(Chain of Responsibilityパターン)を読んでいたが、私はそれがシステム・レベルであれば他 又は スイッチケースのような単純な動作と、このパターンが容易に工場又は合成パターンのような同様のパターンに置き換えることができると感じました。私が言うことができるシナリオはありますか?ソリューションのみを使用しています責任パターンの連鎖?

だけCORは、この問題を解決できることを証明するために任意のシナリオまたは例はあります?予め

おかげ

+4

あなた可能性あなたはすべての* *使用していないCOR(または任意のデザインパターン)を含め、必要として常にコード。だから私は、COR *を使わなければならないことを証明するシナリオはないと思う。 CORは、他のデザインパターンと同様に、懸念の分離に役立ちます。そして、システムレベルで 'if'のコレクションのように働いています。 – Ian

+1

は完全にそれを使用する_convenient_の基本的な例えば、イアンに同意する:あなたは、画像処理アプリケーションを持っている想像してみてください。複数の_filters_を展開して別のファイル形式を開くことはできますが、後で追加することもできます(または第三者が独自に書き込むこともできます)。ユーザーはファイルを開くように頼みます。どのフィルタを使用すべきですか? _yesと言うフィルタが1つ見つかるまでリストを反復します。私はthis_を処理できます。 –

+0

しかし私はちょうど知りたがっています。このパターンについて考えるようになったその問題や状況は何ですか?私は、常に多くのソリューションの間で便利に同意します..ありがとう@lan、Ardiano –

答えて

2

古典的な例は、COR WindowsFormsでHelpRequestedイベントを処理しています。 sourceを参照してください。

我々は、特定のコントロールのイベントハンドラを持っている場合は、それを処理します。それ以外の場合は、イベントを処理する要求が親コントロールに渡されます。

子コントロールが、それを親になり、ヘルプを表示するための要求を処理することができ、それらのかを知っているしません事前に知っていないので、他のまたはスイッチケースは、このケースで私たちを助けにはなりません場合。

0

アレクサンダーのように、より一般的なレベル - 実行時に知られている情報のみに基づいてプロセッサを動的に追加、移動、削除できるすべての処理パイプラインです。

パターンには通常、問題の非常に正確な説明が含まれています(ほとんどの人が無視する傾向がありますが、そのパターンが文脈に十分に近いと感じる腸に頼っています)。ほとんどの場合、解は問題の定式化自体から直接導かれます。これは、パターンの実装が複数ある可能性があるにもかかわらず、解決策をほぼ実行可能な形に制限します。

関連する問題