12

一連の責任パターンを実装しています。

リストに組み合わせることができるさまざまなポリシーがあり、ポリシーのリストを処理するプロセッサがあります。各ポリシーは CustomInput を処理でき、残りのポリシーも処理するかどうかを選択できます。

interface Policy {    
  public boolean process(CustomInput input);    
}

interface Processor {    
  public void process(List<Policy> policies, CustomInput input)    
}

ポリシーのリストをループするプロセッサーを実装し、それぞれのブール値の結果をチェックして、残りのポリシーを続行するかどうかを判断します。

私の同僚は、次のポリシーを各ポリシーに渡し、次のポリシーを呼び出す (または呼び出さない) ようにすることを提案しました (たとえば、FilterChain が行うように)。

私の質問は次のとおりです。

各ポリシーをループしてその結果を確認するよりも、2 番目のソリューション (現在処理中のポリシーに次のポリシーを渡す) に見られない利点はありますか?

4

3 に答える 3

3

両方のコンポーネントが部分的に制御できるようにする中途半端なソリューションを実装できませんか?

interface Policy {
  public Policy process(CustomInput input, Policy defaultNext);
}

processdefaultNext独自の選択がない限り、デフォルトで返すことができます。

于 2013-12-03T15:29:53.107 に答える