概述 單一職責原則是最簡單的面向對象設計原則!定義為不要存在多於一個導致類變更的原因。通俗的說,即一個類只負責一項職責。說文字比較乾巴巴,我們通過上代碼來展示案例; 未使用單一職責原則的代碼 public class Telphone { public void Dial(string phoneN ...
概述
單一職責原則是最簡單的面向對象設計原則!定義為不要存在多於一個導致類變更的原因。通俗的說,即一個類只負責一項職責。說文字比較乾巴巴,我們通過上代碼來展示案例;
未使用單一職責原則的代碼
public class Telphone { public void Dial(string phoneNum) { Console.WriteLine($"給誰{phoneNum}打電話"); } public void HangUp(string phoneNum) { Console.WriteLine($"掛斷{phoneNum}打電話"); } public void SendMessage(string msg) { Console.WriteLine($"發送{msg}"); } public void ReciveMessage(string msg) { Console.WriteLine($"接收{msg}"); } }
內部變化: 如果telphone內部的方法發生變化 就需要修改 不符合單一職責。
外部變化:需要添加新的方法,也需要修改telphone 這是應該的,如果同時內部發生變化就不符合單一職責原則。
使用單一職責原則的代碼
打電話的類:
public interface IDial { public void DialPhoneNum(string phoneNum); } public class Dial: IDial { public void DialPhoneNum(string phoneNum) { Console.WriteLine($"給誰{phoneNum}打電話"); } }
掛電話的類:
public interface IHangUp { public void HangUpPhoneNum(string phoneNum); } public class HangUp: IHangUp { public void HangUpPhoneNum(string phoneNum) { Console.WriteLine($"掛斷{phoneNum}打電話"); } }
發送接收消息的類:
public interface IMessage { public void SendMessage(string msg); public void ReciveMessage(string msg); } public class Message : IMessage { public void SendMessage(string msg) { Console.WriteLine($"發送{msg}"); } public void ReciveMessage(string msg) { Console.WriteLine($"接收{msg}"); } }
調用:
public class Telphone2 { private IHangUp _hangUp; private IMessage _message; private IDial _dial; public Telphone2() { _hangUp = new HangUp(); _message= new Message(); _dial= new Dial(); } public void Output() { _dial.DialPhoneNum("13067707791"); _hangUp.HangUpPhoneNum("13067707791"); _message.SendMessage("mhg"); _message.ReciveMessage("mhg"); } }
//控制台調用 new Telphone2().Output(); Console.ReadLine();
總結
兩種案例大家可以自行對比體會,由於單一職責原則比較簡單,一般從字面意思上就能看出,這裡不過多敘述。
作者:課間一起牛
出處:https://www.cnblogs.com/mhg215/
聲援博主:如果您覺得文章對您有幫助,請點擊文章末尾的【關註我】吧!
別忘記點擊文章右下角的【推薦】支持一波。~~~///(^v^)\\\~~~ .
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
如果您有其他問題,也歡迎關註我下方的公眾號,可以聯繫我一起交流切磋!
