2008-09-17 59 views
2

在我写的应用程序中,我有一个Policy类。有4种不同类型的政策。每个策略都会根据PolicyA> PolicyB> PolicyC> PolicyD等其他策略加权。这是谁的责任呢?

谁的责任是实施逻辑来确定一个策略是否比另一个更伟大?我最初的想法是重载>和<运算符,并在策略类型本身中实现逻辑。

这是否违反SRP?

回答

6

我会认为PolicyComparer类应该做评估。

0

我认为你是在正确的轨道与超负荷不过,这样的扩展显然很多时间

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

0

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

0

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

0

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