srp , single responsibility principle 單一職責原則
乙個類應該有且僅有乙個引起它變化的原因,否則類應該被拆分。即乙個類只做一類事
降低類的複雜度
提供類的可讀性,提高系統的可維護性
變更引起的風險降低
降低耦合度
問題由來:類t負責兩個不同的職責:職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。
解決方案:遵循單一職責原則。分別建立兩個類t1、t2,使t1完成職責p1功能,t2完成職責p2功能。這樣,當修改類t1時,不會使職責p2發生故障風險;同理,當修改t2時,也不會使職責p1發生故障風險。
案例:
用乙個類來描述動物的呼吸
class animal
}public class srpclient
}允許結果:
牛呼吸空氣
馬呼吸空氣
如果此時又加了一種動物"魚",由於魚呼吸水,導致**修改,以下幾種修改方式:
方式一:新增新方法
class animal
public void water(string name)
}public class srpclient
}執行結果:
牛呼吸空氣
馬呼吸空氣
魚呼吸水
此種方案,在類級別上違背了單一職責原則,但在方法級別上卻是符合單一職責原則的,並沒有改動原來的方法
方式二:在原方法修改
class animal else
}}public class srpclient
}執行結果:
牛呼吸空氣
馬呼吸空氣
魚呼吸水
此種方案,直接修改animal類開銷較小,但違背了單一職責原則
方式三:建立新類
class terrestrial
}class aquatic
}public class srpclient
}執行結果:
牛呼吸空氣
馬呼吸空氣
魚呼吸水
此方案需要新增類,修改客戶端,開銷還是很大的。
上述三種方案各有其優缺點,根據實際情況來確定。
只有邏輯足夠簡單,才可以在**級別上違反單一職責原則
只有類中方法數量足夠少,才可以在方法級別上違反單一職責原則
01 單一職責原則 SRP
srp single responsibility principle 單一職責原則 乙個類應該有且僅有乙個引起它變化的原因,否則類應該被拆分。即乙個類只做一類事 降低類的複雜度 提供類的可讀性,提高系統的可維護性 變更引起的風險降低 降低耦合度 問題由來 類t負責兩個不同的職責 職責p1,職責p2...
單一職責原則 SRP
一 srp簡介 srp single responsibility principle 就乙個類而言,應該只專注於做一件事和僅有乙個引起它變化的原因。所謂職責,我們可以理解他為功能,就是設計的這個類功能應該只有乙個,而不是兩個或更多。也可以理解為引用變化的原因,當你發現有兩個變化會要求我們修改這個類...
單一職責原則SRP
1 乙個類,只有乙個引起它變化的原因。應該只有乙個職責。每乙個職責都是變化的乙個軸線,如果乙個類有乙個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當乙個職責發生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響復用性。例如 要實現邏輯和介面的分離。2 什麼是職責?srp中,把...