2

在我正在编写的应用程序中,我有一个 Policy 类。有 4 种不同类型的策略。每个策略都根据其他策略加权,例如 PolicyA > PolicyB > PolicyC > PolicyD。

谁负责执行逻辑来确定一个策略是否大于另一个?我最初的想法是重载 > 和 < 运算符并在 Policy 类型本身中实现逻辑。

这是否违反 SRP?

4

5 回答 5

6

我认为 PolicyComparer 类应该进行评估。

于 2008-09-17T14:18:26.393 回答
0

你想要一个 PolicyComparator 类。如果您想覆盖 < 和 >,那很好,但是在 Policy 基类中进行覆盖,并让这些实现利用 PolicyComparator 来完成。

于 2008-09-17T14:34:29.210 回答
0

我认为您在过载的情况下走在正确的轨道上,但是扩展显然要长得多

如果 (A > B || B > C || C > D) ...

于 2008-09-17T14:21:39.317 回答
0

您还可以在您的类中存储一个 PolicyWeight 属性,它是一个简单的内置类型(int、unsigned int、...),然后可以很容易地进行比较。

于 2008-09-17T14:24:05.880 回答
0

Certianly 是一个专门的比较器类。如果您需要提供额外的逻辑(例如,有两种或三种不同的策略比较方式),这种方法可以让您更加灵活(通过运算符重载无法实现)。

于 2008-09-17T14:24:37.813 回答