参考网址: https://www.cnblogs.com/mq0036/p/13529938.html
通常讲到设计模式,一个最通用的原则是SOLID:
- S - Single Responsibility Principle,单一责任原则
- O - Open Closed Principle,开闭原则
- L - Liskov Substitution Principle,里氏替换原则
- I - Interface Segregation Principle,接口隔离原则
- D - Dependency Inversion Principle,依赖倒置原则
嗯,这就是五大原则。
后来又加入了一个:Law of Demeter,迪米特法则。于是,就变成了六大原则。
原则好理解。怎么用在实践中?
为了防止不提供原网址的转载,特在这里加上原文链接:https://www.cnblogs.com/tiger-wang/p/13525841.html
一、单一责任原则
单一责任原则,简单来说就是一个类或一个模块,只负责一种或一类职责。
看代码:
public interface IUser
{
void AddUser();
void RemoveUser();
void UpdateUser();
void Logger();
void Message();
}
根据原则,我们会发现,对于IUser
来说,前三个方法:AddUser
、RemoveUser
、UpdateUser
是有意义的,而后两个Logger
和Message
作为IUser
的一部分功能,是没有意义的并不符合单一责任原则的。
所以,我们可以把它分解成不同的接口:
public interface IUser
{
void AddUser();
void RemoveUser();
void UpdateUser();
}
public interface ILog
{
void Logger();
}
public interface IMessage
{
void Message();
}
拆分后,我们看到,三个接口各自完成自己的责任,可读性和可维护性都很好。
下面是使用的例子,采用依赖注入来做:
public class Log : ILog
{
public void Logger()
{
Console.WriteLine("Logged Error");
}
}
public class Msg : IMessage
{
public void Message()
{
Console.WriteLine("Messaged Sent");
}
}
class Class_DI
{
private readonly IUser _user;
private readonly ILog _log;
private readonly IMessage _msg;
public Class_DI(IUser user, ILog log, IMessage msg)
{
this._user = user;
this._log = log;
this._msg = msg;
}
public void User()
{
this._user.AddUser();
this._user.RemoveUser();
this._user.UpdateUser();
}
public void Log()
{
this._log.Logger();
}
public void Msg()
{
this._msg.Message();
}
}