必知必会的设计原则——单一职责原则
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了必知必会的设计原则——单一职责原则相关的知识,希望对你有一定的参考价值。
概述
单一职责原则是最简单的面向对象设计原则!定义为不要存在多于一个导致类变更的原因。通俗地说,即一个类只负责一项职责。说文字比较干巴巴,我们通过上代码来展示案例;
未使用单一职责原则的代码
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();
总结
两种案例大家可以自行对比体会,由于单一职责原则比较简单,一般从字面意思上就能看出,这里不过多叙述。有何疑问,欢迎与我微信沟通。
以上是关于必知必会的设计原则——单一职责原则的主要内容,如果未能解决你的问题,请参考以下文章