2011-07-29 64 views
3

在我們的Java Web應用重構了一些服務層類之後,我就問自己,此時它是合理的,停止秉承單一職責原則(SRP),並保持代碼的可維護性和可讀性。現在我問你有關這個問題的經驗。什麼時候違反單一責任原則是合理的?

實施例:

假設的UserManager類執行以下操作:

  1. 發現用戶從數據庫
  2. 創建新用戶
  3. 操縱現有用戶

Cas e答:這三項責任中的每一項都由幾種執行其任務的方法組成。

→這將是清楚的,我把它分成三類。

案例B:每天的這三個責任僅由一個方法。

,你會在這種情況下什麼建議?這應該分成三個小類還是保留在UserManager類中?

回答

4

在我看來,由於SRP相關OOP意味着狀態和行爲有關的特定對象或實體都應該是一個類中。因此,我的觀點是,您希望將與用戶有關的所有方法都保存在一個類中,而不管有多少種方法或需要多少個來執行特定任務。

SRP的點(在我看來)是確保你沒有域對象操縱彼此。換句話說,如果你(假設)有另一個類叫做AccountManager,那麼這個類不應該有直接操縱User對象的任何操作 - 因爲這會違反SRP。相反,AccountManager類需要依賴UserManager類來處理任何/所有用戶操作。