面向对象原则之单一职责原则

单一职责原则

基本介绍

单一职责原则(Single Responsibility Principle, SRP),用来控制类的粒度大小,一个类只负责一个功能领域中的相应职责,在软件系统种,一个类承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可以将它们封装在同一类中。单一职责原则是实现高内聚、低耦合的指导方针。

代码示例

下面通过一个例子来更好的理解单一职责原则:

public class CustomerData {

    /**
     * 连接数据库
     */
    public void connectionDataBase(){
    }

    /**
     * 客户信息list
     */
    public void listCustomer(){
    }
}

从上述代码可以看到有一个CustomerData类,拥有connectionDataBaselistCustomer两个方法,connectionDataBase是用来连接数据库,而listCustomer是用来获取客户信息的,两个方法分别负责不同领域的职责。如果在其他类种也需要连接数据库或者查询客户信息时,则很难实现代码重用。无论是修改数据库连接方式或者修改客户信息查询方法,都会引起该类的变更,违反了单一职责的宗旨。

下面我们来对CustomerData类进行重构,以下是重构后的代码:

public class CustomerData {
    /**
     * 客户信息list
     */
    public void listCustomer(){
    }
}

public class DataBaseUtils {
    /**
     * 连接数据库
     */
    public void connectionDataBase(){
    }
}

我们将connectionDataBase方法独立出来了,放到了DataBaseUtils类中,用来进行数据库相关的操作,CustomerData类保留了listCustomer方法,用来获取客户数据。经过一番重构之后,可以看到职责更加清晰了,无论如何修改,都不会影响到对方。

发布了107 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/chen_changying/article/details/103553232