必知必会的设计原则——单一职责原则

概述

单一职责原则是最简单的面向对象设计原则!定义为不要存在多于一个导致类变更的原因。通俗地说,即一个类只负责一项职责。说文字比较干巴巴,我们通过上代码来展示案例;.

未使用单一职责原则的代码

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();

总结

两种案例大家可以自行对比体会,由于单一职责原则比较简单,一般从字面意思上就能看出,这里不过多叙述。有何疑问,欢迎与我微信沟通。

必知必会的设计原则——单一职责原则