到底是谁的责任?
时间:2020-03-05 18:58:58 来源:igfitidea点击:
在应用程序中,我正在编写一个Policy类。有4种不同类型的政策。每个策略都相对于其他策略(例如PolicyA> PolicyB> PolicyC> PolicyD)加权。
实施逻辑以确定一个策略是否比另一个策略重要的是谁的责任?我最初的想法是重载>和<运算符,并在Policy类型本身中实现逻辑。
是否违反了SRP?
解决方案
回答
我认为应该使用PolicyComparer类进行评估。
回答
我认为我们在超载方面步入正轨,但是此扩展显然要长得多
如果(A> B || B> C || C> D)
...
回答
我们还可以在类中存储一个PolicyWeight属性,该属性是一个简单的内置类型(int,unsigned int,...),可以轻松对其进行比较。
回答
值得一提的是一个专门的比较器类。如果我们需要提供其他逻辑(例如,使用两种或者三种不同的策略比较方式),则此方法可为我们提供更大的灵活性(无法通过操作员重载来实现)。
回答
我们需要一个PolicyComparator类。如果要覆盖<和>,那很好,但是可以在Policy基类中进行覆盖,并让这些实现使用PolicyComparator来实现。