單一職責原則

2021-09-12 18:47:46 字數 1317 閱讀 5801

單一職責原則要求就是乙個介面或者類只有乙個原因引起的,也就是乙個介面或者類只有乙個職責。

public

inte***ce

iuser

上述介面的使用者屬性和使用者行為就沒有分開,違背了單一職責原則,我們可以將其拆分為兩個介面,將使用者屬性抽取為乙個bo(業務邏輯),將使用者行為抽取成乙個biz(業務邏輯),按照這個邏輯將上述這個介面修正如下:

public

inte***ce

iuserbo

public

inte***ce

iuserbiz

public

inte***ce

iuser extend iuserbo,iuserbiz

public

class

user

implements

iuser

當我們需要賦值時,我們可以將其當成乙個bo物件,也可以當成乙個biz物件,如下:

iuser user =

newuser()

;iuserbo userbo =

(iuserbo)user;

userbo.

setusername

("張三");

//或者

iuserbiz userbiz =

(iuserbiz)user;

userbize.

changepassword

("123456"

);

我們把乙個介面拆成了兩個介面,其實,我們可以直接使用兩個不同的類或介面:乙個是iuserbo,乙個是iuserbize。

public

class

userbo

implements

iuserbo

public

class

userbize

implements

iuserbiz

另外單一職責原則不單適用於介面、類,同時也適用於方法。

public

inte***ce

alteruser

我們可以將引數param修改到user物件上,然後update這個物件,完成對其的修改,但是會造成這個方法的職責不明確。我們可以根據功能將其分開

public

inte***ce

alteruser

單一職責原則

定義 不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。問題由來 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 遵循單一職責原則。分別建立兩個類t1 t2,使t1完成職責p1功能,t...

單一職責原則

單一職責原則 乙個類,只有乙個引起它變化的原因。應該只有乙個職責。每乙個職責都是變化的乙個軸線,如果乙個類有乙個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當乙個職責發生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響復用性。例如 要實現邏輯和介面的分離。對於user類,裡...

單一職責原則

問題由來 一心二用,效率降低 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 專注做某件事情 遵循單一職責原則。分別建立兩個類t1 t2,使t1完成職責p1功能,t2完成職責p2功能。這樣,當修改類t1...