单一职责原则:
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.youkuaiyun.com/zhengzhb/article/details/7278174