bruce1992

参考网址: https://www.cnblogs.com/mq0036/p/13529938.html

通常讲到设计模式,一个最通用的原则是SOLID:

  1. S - Single Responsibility Principle,单一责任原则
  2. O - Open Closed Principle,开闭原则
  3. L - Liskov Substitution Principle,里氏替换原则
  4. I - Interface Segregation Principle,接口隔离原则
  5. 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来说,前三个方法:AddUserRemoveUserUpdateUser是有意义的,而后两个LoggerMessage作为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();
    }
}

分类:

技术点:

相关文章: