在我写的应用程序中,我有一个Policy类。有4种不同类型的政策。每个政策都针对其他政策加权,以便PolicyA>政策B> PolicyC> PolicyD。
谁负责实施逻辑来确定一个政策是否比另一个更好?我最初的想法是超载>和<运算符并实现Policy类型本身的逻辑。
这是否违反了SRP?
答案 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来完成它。