所以,單一職責原則 - 階級應該改變一個原因,而且只有一個原因,但是如何有效地判斷這個責任究竟是什麼。簡單的例子:S in SOLID - 你如何繪製線條?
public class UserManager
{
public void AddUser() { }
public void RemoveUser() { }
public void UpdateUser() { }
}
可以認爲,其中任何一個會打破SRP。所以,你最終用DI其中兩個與該結束了:
public class UserManager
{
private UserRemover _remover;
private UserUpdater _updater;
public UserManager(UserRemover remover, UserUpdated updater)
{
_remover = remover;
_updater = updater;
}
public void AddUser() { }
public void RemoveUser() { }
public void UpdateUser() { }
}
如果有關於用戶管理更多的方法?會沿着這條路走下去,並繼續在構造函數中傳遞額外的依賴關係?對於任何擁有一種以上公共方法的課程,可以認爲它打破了SRP。你有沒有使用常識,並選擇一個選擇,或者是純粹的,並選擇兩個選項?
這是基於意見的,所以我投票結束。但如果有人告訴你選項2更好,我會感到震驚。這是極端迂腐。 – StilesCrisis
答案不是基於意見的。答案是「它不會破壞SRP」。除非您有充分的商業理由以不同的方式移除不同的用戶,否則您不需要獨特的「UserRemover」。因此,讓他們保持在同一個班級,直到你遇到業務需求。只有這樣你才能重構插入新函數。 (記住敏捷的YAGNI原則。) –