錯誤**示例:
course 類承擔了兩種處理邏輯。假如現在要對課程進行加密,直播課程和錄播課程的加密邏輯不一樣,必須修改**。而修改**的邏輯勢必會相互影響,容易帶來不可控的風險。
public
class
course
else}}
// 呼叫
public
class
singleresponsibilitytest
}
我們對職責進行解耦,分別建立兩個類:livecourse、replaycourse
public
class
livecourse
}public
class
replaycourse
}// 呼叫類
public
class
singleresponsibilitytest
}
public
inte***ce
icourse
拆分成兩個介面:
public
inte***ce
icourseinfo
public
inte***ce
icoursemanager
// 實現類
public
class
courseimpl
implements
icoursemanager
,icourseinfo
@override
public
void
refundcourse()
@override
public string getcoursename()
@override
public
byte
getcoursevideo()
}
public
class
method
private
void
modifyuserinfo
(string username,string.
.. fileds)
private
void
modifyuserinfo
(string username,string address,
boolean bool)
else
username =
"tom"
; address =
"changsha";}
}
將這個方法拆分成兩個方法:
private
void
modifyusername
(string username)
private
void
modifyaddress
(string address)
單一職責原則
定義 不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。問題由來 類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...