2010-10-22 41 views
0

我正在設計一個.Net庫,它揭示了所有這些方法都可以標記爲輔助方法的方法。發生在是PersonID,角色ID等收益計算工資,薪金全年,獎金等使用基於靜態或接口的輔助方法設計庫?

  • 它是確定設計出具有類似的getSalary(方法)只是一個靜態類,GetBonus(),GetHistoricSalary()。
  • 或者我應該有一個接口ISalaryProcessor,並在那裏有這些方法?

對於選項2,實現類只是具有行爲而不是數據,在試圖引入合同時,我是否會創建一個不需要的純製造?

回答

2

如果您提供一個接口(或多個接口,根據ISP),您的客戶端可以爲您的庫的某些部分提供它們自己的實現,並在需要時輕鬆切換它(例如用於測試目的)。

它還允許客戶端程序提供給接口,並按照LSP在他們的工作,使他們的應用程序分離的實現。

對於這樣的靈活性,我會去的接口。

的靜態庫,沒有辦法切換出來,並引入了直接依賴(對LSP)。

+0

同意。但是我的SalaryProcessor實現ISalaryProcessor只會有行爲,對於一個類只有行爲可以嗎? – anivas 2010-10-22 19:01:52

+0

@anivas - 如果它只是一個幫手類,那爲什麼不呢?要實用,不要教條。 – Oded 2010-10-22 19:02:38