在我寫的應用程序中,我有一個Policy類。有4種不同類型的政策。每個策略都會根據PolicyA> PolicyB> PolicyC> PolicyD等其他策略加權。這是誰的責任呢?
誰的責任是實施邏輯來確定一個策略是否比另一個更偉大?我最初的想法是重載>和<運算符,並在策略類型本身中實現邏輯。
這是否違反SRP?
在我寫的應用程序中,我有一個Policy類。有4種不同類型的政策。每個策略都會根據PolicyA> PolicyB> PolicyC> PolicyD等其他策略加權。這是誰的責任呢?
誰的責任是實施邏輯來確定一個策略是否比另一個更偉大?我最初的想法是重載>和<運算符,並在策略類型本身中實現邏輯。
這是否違反SRP?
我會認爲PolicyComparer類應該做評估。
我認爲你是在正確的軌道與超負荷不過,這樣的擴展顯然很多時間
如果(A> B || B> C || C> d) ...
您也可以在您的類中存儲PolicyWeight屬性,它是一個簡單的內置類型(int,unsigned int,...),然後可以輕鬆地進行比較。
Certianly一個專門的比較類。如果您需要提供額外的邏輯(例如,有兩種或三種不同的比較策略方式),這種方法可以提供更大的靈活性(通過操作員過載無法實現)。
你想要一個PolicyComparator類。如果你想覆蓋<和>,那很好,但是在Policy基類中重寫,並且讓這些實現使用PolicyComparator來完成它。