简介:单一职责原则(Single Responsibility Principle),简称SRP。
定义:有且仅有一个原因引起接口或类的变更。
举例:电话通话的过程将会伴随四个过程---拨号,通话,挂机。对应的电话模拟过程如下
public interface Iphone{
//拨通电话
public void dial(String phoneNumber);
//通话
public void chat(Object o);
//通话完毕,挂电话
public void hangup();
}
但是这个接口是有问题的,因为它没有实现SRP原则。从中我们可以看到它包含了两个职责:协议管理和数据传送。协议管理主要是拨通电话和挂断电话部分,数据传送是通话部分。这样就会存在两个原因引起接口的变化,其一,协议管理发生变化,比如以前用的移动打电话,我改用电信打电话了;其二,通话部分发生变化,通过移动打电话改用通过移动上网。而且这两个职责是互不影响的,如果将其组合在一起就会呈现出强耦合的关系,不利于以后的开发和维护。对此,可将其拆分成两个接口实现。
public interface IConnectionManager{
public void dial(String phoneNUmber);
public void hangup();
}
public interface IDataTransfer{
public void DataTransfer(IConnectionManager cm);
}
优点:降低了类的复杂性,提高了可读性,可维护性,变更引起的风险降低。
难点在于职责的划分,但同时也得考虑实际情况,因项目而异,因环境而异。