无论如何,这是谁的责任?

时间:2008-09-17 14:16:56

标签: solid-principles single-responsibility-principle

在我写的应用程序中,我有一个Policy类。有4种不同类型的政策。每个政策都针对其他政策加权,以便PolicyA>政策B> PolicyC> PolicyD。

谁负责实施逻辑来确定一个政策是否比另一个更好?我最初的想法是超载>和<运算符并实现Policy类型本身的逻辑。

这是否违反了SRP?

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

我认为你在超载方面处于正确的轨道,但是这种延伸显然要长得多

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您需要PolicyComparator类。如果你想覆盖<和>,这很好,但是在Policy基类中重写,并让这些实现使用PolicyComparator来完成它。