一: 单一职责原则
单一职责原则按照表面的意思来说就是一个接口一个类一个方法只负责一个事情。
以电话接口为例:
public interface IPhone {
//拨通电话
public void dial(String phoneNumber);
//通话
public void chat(Object o);
//通话完毕,挂电话
public void hangup();
}
当我们要使用电话功能的时间,只需要实现这个接口,就可以了。 但是现在我们有手机和电话两种通信设备了。 如果他们的拔通电话 和挂断电话的功能一样, 但是通话的功能不一样。我们这个接口就不能使用。 因为他的职责不够单一。
我们需要将接口重新设计。
这样我们就有连接管理接口,有了数据传输接口。
使用场景:
我们有两个通信设备,一个智能手机,一个传统的座机。 他们拔通电话,挂断电话的方法是一样的。 但是通话方法是不一样的。 手机类可以实现这两个接口,座机类也以实现这两个接口。或者一个接口。 这样两个通信设备的连接方法不一样, 我们只需要重写通信方法就可以了。
这个只是接口的单一原则,像我们经常用到一个方法修改用户信息 ChangeUser(SysUser user)
可以改成
单一原则的好处
● 类的复杂性降低,实现什么职责都有清晰明确的定义;
● 可读性提高,复杂性降低,那当然可读性提高了;
● 可维护性提高,可读性提高,那当然更容易维护了;
● 变更引起的风险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性、维护性都有非常大的帮助。
最佳实践
我们平时开发当中, 由于开发时间的原则很难做到完成的单一原则。而且对于单一职责的划分,也没有一个统一的标准。 我们建议就是要尽量做到接口和方法的单一职责。 而对于类尽量简短就好了。
欢迎加qq群交流
659772197