01 單一職責原則 SRP

2022-09-18 22:00:24 字數 1373 閱讀 5015

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中,把...