[英]How to use Single-Responsibility Principle
我試圖理解c ++中的設計原則。
在數據庫中我有用戶。
users:
id
name
age
gender
我希望以三種方式吸引用戶。
例如,如果我對getAllUsers和getFilteredByAge使用相同的類,則意味着我的類有兩個責任,它負責獲取用戶以及過濾它們。 我是對還是不對? 單一責任原則如何在這個例子中起作用,我應該將這三個分成不同的類,還是有更好的方法?
SRP的一個很好的定義是:
一個模塊應該對一個且只有一個演員負責。
(清潔建築)
這意味着如果告訴您這些函數的功能是相同的,那么您可以將它們保留在同一個類/模塊中。
如果,假設getAllUsers()
請求getAllUsers()
並且HR請求getUserAtLeastThisOld(int minimumAge)
,那么將它們放在單獨的類中可能是明智的。
以下是您的問題的答案
問]如果我對getAllUsers和getFilteredByAge使用相同的類,這意味着我的班級有兩個責任?
答: 不,因為你的班級的工作是獲得用戶,而不是這些函數應該是重載而不應該在不同的類中。
問:它負責獲取用戶並過濾它們。 我是對還是不對?
A] 我猜不是!,過濾不是一個不同的任務,它是在檢索對象之前應該應用的東西。
Q]單一責任原則如何在這個例子中起作用,我應該將這三個分成不同的類,還是有更好的方法?
一種]
在這種情況下,我建議你只有一個類,它應該具有以下函數重載
注意: 現在假設您將來想要為此類添加更多功能,例如為用戶計算工資,或者為用戶添加家庭詳細信息,那么在這種情況下您可以創建另一個類而不是為單個類加重...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.