2008-09-17 87 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來完成它。