就一个类而言,应该仅有一个引起它变化的原因。
举例说明:
违反SRP原则代码:
modem接口明显具有两个职责:连接管理和数据通讯;
modem接口明显具有两个职责:连接管理和数据通讯;
interface Modem
{
public void dial(string pno);
public void hangup();
public void send(char c);
{
public void dial(string pno);
public void hangup();
public void send(char c);
public void recv();
}
这个接口有2个职责,负责连接管理(dial、hangup),和负责数据传输(send、recv)。
当一个类有多个职责时,
一是增加了类本身的复杂度。
二是当一个职责变化时,会使调用另外一个职责的类的重新编译链接(耦合)。
但也不是绝对说,上面的例子就是要分成2个类。
很多系统相关、硬件相关的开发,因为和细节相关,有时不得不把多个职责耦合在一起。
并且,如果只是其中一个职责经常变化,那我们应该要分离职责,
但是如果2个职责经常一起变化,那就没有必要分离它们了。
具体问题具体分析, 当真正有需求时再去考虑分离。
}
这个接口有2个职责,负责连接管理(dial、hangup),和负责数据传输(send、recv)。
当一个类有多个职责时,
一是增加了类本身的复杂度。
二是当一个职责变化时,会使调用另外一个职责的类的重新编译链接(耦合)。
但也不是绝对说,上面的例子就是要分成2个类。
很多系统相关、硬件相关的开发,因为和细节相关,有时不得不把多个职责耦合在一起。
并且,如果只是其中一个职责经常变化,那我们应该要分离职责,
但是如果2个职责经常一起变化,那就没有必要分离它们了。
具体问题具体分析, 当真正有需求时再去考虑分离。