2

私が書いているアプリケーションには、Policy クラスがあります。ポリシーには 4 つの異なるタイプがあります。各ポリシーは、ポリシー A > ポリシー B > ポリシー C > ポリシー D のように、他のポリシーに対して重み付けされます。

あるポリシーが別のポリシーよりも優れているかどうかを判断するロジックを実装する責任は誰にありますか? 私が最初に考えたのは、> および < 演算子をオーバーロードし、ポリシー タイプ自体にロジックを実装することです。

それはSRPに違反していますか?

4

5 に答える 5

6

PolicyComparer クラスが評価を行うべきだと思います。

于 2008-09-17T14:18:26.393 に答える
0

PolicyComparator クラスが必要です。< と > をオーバーライドしたい場合は問題ありませんが、Policy 基本クラスでそのオーバーライドを行い、それらの実装で PolicyComparator を使用してそれを実行させます。

于 2008-09-17T14:34:29.210 に答える
0

あなたは過負荷で正しい軌道に乗っていると思いますが、これの延長は明らかにはるかに長くなります

if (A > B || B > C || C > D) ...

于 2008-09-17T14:21:39.317 に答える
0

クラスに PolicyWeight 属性を格納することもできます。これは、簡単に比較できる単純な組み込み型 ( int、unsigned int、... ) です。

于 2008-09-17T14:24:05.880 に答える
0

確かに専用の比較クラスです。追加のロジックを提供する必要がある場合 (たとえば、ポリシーを比較する 2 つまたは 3 つの異なる方法がある場合)、このアプローチにより柔軟性が向上します (演算子のオーバーロードでは実現できません)。

于 2008-09-17T14:24:37.813 に答える