C# 設計原則-單一職責原則
阿新 • • 發佈:2020-12-15
單一職責原則,全稱Single Responsibility Principle,英文縮寫SRP。
簡單來說,就是一個類應該只有一個變化的原因,在一個類裡,只負責一個職責。
如果一個類需要修改,那麼就是因為其職責發生變化這個原因才需要修改,如果因為其它原因而去修改,那這個類就是負責了多個職責。
這裡定義一個Pen類,它有Write寫字的方法。
public class Pen { public void Write() { Console.WriteLine("寫字"); } } public static void Main(string[] args) { Pen pen = new Pen(); pen.Write(); }
如果想定義用不同顏色的筆來寫,這個設計就滿足不了。比如說,用黑筆和紅筆,這裡就具有兩個職責,一個是寫黑色字,一個是寫紅色字。下面修改方法來滿足設計原則。
第一種
public class Pen { public void Write(String color) { if (color == "black") { Console.WriteLine("寫黑字"); } elseif (color == "red") { Console.WriteLine("寫紅字"); } } }
這樣讓Write方法可以同時寫黑字和紅字。設計上,Write可以寫不同的字,Write是隻有一個寫字的職責。
第二種
public class Pen { public void WriteBlack() { Console.WriteLine("寫黑字"); } public void WriteRed() { Console.WriteLine("寫紅字"); } }
在Pen類中定義WriteBlack和WriteRed兩個方法。設計上,Pen類可以寫黑字和紅字,Pen是隻有一個寫字的職責。
第三種
public class BlackPen { public void Write() { Console.WriteLine("寫黑字"); } } public class RedPen { public void Write() { Console.WriteLine("寫紅字"); } }
定義BlackPen和RedPen,每種筆都可以寫字。設計上,每種顏色的筆寫對應顏色的字,每個類都只有一個寫字的職責。
總結
單一職責原則的重點在於職責的劃分,通過職責的細化,體現高內聚的優點,讓各個模組更加清晰,可以減少修改帶來的影響。