单一职责原则
基本介绍
单一职责原则(Single Responsibility Principle, SRP),用来控制类的粒度大小,一个类只负责一个功能领域中的相应职责,在软件系统种,一个类承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可以将它们封装在同一类中。单一职责原则是实现高内聚、低耦合的指导方针。
代码示例
下面通过一个例子来更好的理解单一职责原则:
public class CustomerData {
/**
* 连接数据库
*/
public void connectionDataBase(){
}
/**
* 客户信息list
*/
public void listCustomer(){
}
}
从上述代码可以看到有一个CustomerData
类,拥有connectionDataBase
和listCustomer
两个方法,connectionDataBase
是用来连接数据库,而listCustomer
是用来获取客户信息的,两个方法分别负责不同领域的职责。如果在其他类种也需要连接数据库或者查询客户信息时,则很难实现代码重用。无论是修改数据库连接方式或者修改客户信息查询方法,都会引起该类的变更,违反了单一职责的宗旨。
下面我们来对CustomerData
类进行重构,以下是重构后的代码:
public class CustomerData {
/**
* 客户信息list
*/
public void listCustomer(){
}
}
public class DataBaseUtils {
/**
* 连接数据库
*/
public void connectionDataBase(){
}
}
我们将connectionDataBase
方法独立出来了,放到了DataBaseUtils
类中,用来进行数据库相关的操作,CustomerData
类保留了listCustomer
方法,用来获取客户数据。经过一番重构之后,可以看到职责更加清晰了,无论如何修改,都不会影响到对方。