C# 设计原则-单一职责原则

 

  单一职责原则,全称Single Responsibility Principle,英文缩写SRP。

  简单来说,就是一个类应该只有一个变化的原因,在一个类里,只负责一个职责。

  如果一个类需要修改,那么就是因为其职责发生变化这个原因才需要修改,如果因为其它原因而去修改,那这个类就是负责了多个职责。

  这里定义一个Pen类,它有Write写字的方法。

public class Pen
{
    public void Write()
    {
        Console.WriteLine("写字");
    }
}

public static void Main(string[] args)
{
    Pen pen = new Pen();
    pen.Write();
}

  如果想定义用不同颜色的笔来写,这个设计就满足不了。比如说,用黑笔和红笔,这里就具有两个职责,一个是写黑色字,一个是写红色字。下面修改方法来满足设计原则。

第一种

public class Pen
{
    public void Write(String color)
    {
        if (color == "black")
        {
            Console.WriteLine("写黑字");
        }
        else if (color == "red")
        {
            Console.WriteLine("写红字");
        }

    }
}

  这样让Write方法可以同时写黑字和红字。设计上,Write可以写不同的字,Write是只有一个写字的职责。

 第二种

public class Pen
{
    public void WriteBlack()
    {
        Console.WriteLine("写黑字");

    }

    public void WriteRed()
    {
        Console.WriteLine("写红字");

    }
}

  在Pen类中定义WriteBlack和WriteRed两个方法。设计上,Pen类可以写黑字和红字,Pen是只有一个写字的职责。

 第三种

public class BlackPen
{
    public void Write()
    {
        Console.WriteLine("写黑字");

    }
}

public class RedPen
{
    public void Write()
    {
        Console.WriteLine("写红字");

    }
}

  定义BlackPen和RedPen,每种笔都可以写字。设计上,每种颜色的笔写对应颜色的字,每个类都只有一个写字的职责。

 总结

  单一职责原则的重点在于职责的划分,通过职责的细化,体现高内聚的优点,让各个模块更加清晰,可以减少修改带来的影响。 

原文地址:https://www.cnblogs.com/shadoll/p/14107082.html