单一职责原则

单一职责原则:

    Single Responsibility Principle,SRP:Each class should have one and only one reason to change.——Robert C.Martin  一个类应该仅有一个引起它变化的原因。

    SRP是实现高内聚、低耦合的指导方针,是最简单,但又最难以运用的原则。

    在SRP中,把职责定义为“变化的原因”。如果你能想到多个动机去改变一个类,那么这个类就具有多于一个的职责,当其中一个职责变化时,很可能会影响其他职责的运作。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。这就需要设计人员发现类的不同职责并将其分离。


职责扩散:

   在了解了SRP之后,我们有必要再了解一下职责扩散,因为往往我们会在这个地方违背SRP。所谓职责扩散,就是因为某种原因,职责P被分化为粒度更细的职责P1和P2。

    比如下面的例子:

    class Program
    {
        static void Main(string[] args)
        {
            Animal animal = new Animal();
            animal.Breathe("小狗");
            animal.Breathe("小猫");
        }
    }
    class Animal
    {
        public void Breathe(string animal)
        {
            Console.WriteLine(animal + "呼吸空气 ");
        }
    }
    运行结果:


    程序上线后需求发生变化,又多了一条鱼出来,此时发现,鱼需要呼吸水,这时你会怎么办?是简单的改一下Animal类,还是代码重构,把动物分为陆生和水生?

    所以在职责扩散到我们无法控制的程度之前,应该立刻对代码进行重构。


参考资料:

http://blog.csdn.net/zhengzhb/article/details/7278174

http://www.docin.com/p-593876879.html

http://blog.chinaunix.net/uid-17102734-id-2830087.html

你可能感兴趣的:(SRP,单一职责原则)