單一職責原則: 對象不應承擔太多功能,正如一心不能而用,比如太多的工作(種類)會使人崩潰。唯有專註才能保證對象的高內聚;唯有唯一,才能保證對象的細粒度。 解決問題: 假如有A和B兩個類,當A需求發生改變需要修改時,不能導致B類出問題。 現狀: 在實際情況很難去做到單一職責原則,因為隨著業務的不斷變更 ...
目錄:
單一職責原則:
對象不應承擔太多功能,正如一心不能而用,比如太多的工作(種類)會使人崩潰。唯有專註才能保證對象的高內聚;唯有唯一,才能保證對象的細粒度。
解決問題:
假如有A和B兩個類,當A需求發生改變需要修改時,不能導致B類出問題。
現狀:
在實際情況很難去做到單一職責原則,因為隨著業務的不斷變更,類的職責也在發生著變化,即職責擴散。如類A完成職責P的功能,但是隨著後期業務細化,職責P分解成更小粒度的P1與P2,這時根據單一職責原則則需要拆分類A以分別滿足細分後的職責P1和P2。但是實際開發環節,若類的邏輯足夠簡單,可以在代碼上級別上違背單一職責原則;若類的方法足夠少,可以在方法級別上違背單一職責原則。
經典案例:
用一個類描述動物呼吸的場景
1 namespace MyDemo 2 { 3 internal class Animal 4 { 5 public void breath(string animal) 6 { 7 Console.WriteLine($"{animal}呼吸空氣"); 8 } 9 } 10 }view code
1 namespace MyDemo 2 { 3 internal class Program 4 { 5 private static void Main(string[] args) 6 { 7 Animal animal = new Animal(); 8 animal.breath("