单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。(什么是类的粒度?)
单一原则是实现低耦合、高内聚的指导方针。(什么是低耦合、高内聚?)
单一职责原则的定义:
一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。
我理解的是一个类只用来实现一个功能或者一些总是同时发生改变的功能(即这些功能是一个整体不可分割)
举例:
假设在类A的方法中,getConnection()方法是用于连接数据库,findUser()用于查询用户信息,displayUser()用于用户的图表显示。
可见类A承担了很多职责,既包含数据库相关的方法又包含查询、显示用户的方法,若是其他类也要使用数据库的连接或者查询用户信息,代码则不能实现重用。无论是修改数据库连接的方式还是修改显示用户信息的方式都需要修改该类,它拥有不止一个引起它变化的原因,违背了单一职责原则,为使其满足单一职责原则,对该类进行拆分:
DBUtil:该类负责数据库的连接
UserDao:该类负责用户信息的增删改查
DisplayUser:该类负责用户的图表显示
这样设计后每个类都只负责自己的职责,不会因为其他因素而变化,方便了代码的重用和维护。