深入理解单一职责原则(Single Responsibility principle )

简介: 深入理解单一职责原则(Single Responsibility principle )

单一职责

单一职责

用于控制类的粒度大小

单一职责的定义

1.一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。

另外一种定义方式:就一个类而言,应该仅有一个引起它变化的原因。

为什么要是用单一职责,什么情况下需要使用单一职责

由于单一职责是用来控制类得到粒度大小,所以我们在进行类的设计阶段的时候,就需要将我们设计的类,符合我们的单一职责。


单一职责是实现高内聚,低耦合的指导方针。

在软件系统中,一个类(大到模块,小到方法)承担的职责越多,他被复用的可能性就越小,而且一个类承担的职责过多,相当于将这些职责都耦合在一起,当我们类中的职责很多很多无限多的时候,当其中一个职责发生变化的时候,很可能会影响到其他的职责。因此我们需要将不同的职责分开,将不同的职责分别封装在不同的类中。及将不同变化的原因封装在不同的类中,也可以将同时间发生变化的职责封装在同一个类中(一个类中方法的互相调用)

示例

某公司开发人员对客户关系管理系统中客户信息图形统计模块,提出了如图的初步设计方案:

在CustomerDataChart类中,getConnection()方法用于连接数据库,findCustomers()方法用于查询所有客户的信息,createChar()、displayChart()这两个方法分别用于创建图标和展示图标。

现在需要使用单一职责进行重构。


我们可以看到在CustomerDataChart类中,封装了太多的方法,既有连接数据库、又有对数据进行操作的方法,还有对图标创建和展示的方法。

如果我们在其他类需要用到数据库连接的方法,或者是图表的创建和展示等方法,那么会难以复用。

如果后期我需要修改连接数据库的方法,或者是修改findCustomers()方法都会去修改这个类,那么这个类就有不止有一个引起它变化的原因。显然不符合单一职责原则。

使用单一职责进行重构


重构之后,拆分为了三个类

CustomerDataChart类负责图表的创建和展示。

CustomerDAO类负责操作Customer表对他进行增删改查

DBManagement类负责连接数据库。


目录
相关文章
|
存储 数据库 数据格式
深入理解依赖倒置原则(Dependence Inversion Principle)
深入理解依赖倒置原则(Dependence Inversion Principle)
329 0
六大设计原则-单一职责原则【Single Responsibility Principle】
六大设计原则-单一职责原则【Single Responsibility Principle】
49 0
|
XML Java BI
深入理解接口隔离原则(Interface Segregation Principle)
深入理解接口隔离原则(Interface Segregation Principle)
326 0
|
程序员 数据库管理
设计原则(二):SRP 单一职责原则
设计原则(二):SRP 单一职责原则
158 0
|
存储 设计模式 Dubbo
行为型-Chain Of Responsibility
职责链模式的原理和实现 职责链模式的英文翻译是 Chain Of Responsibility Design Pattern。在 GoF 的《设计模式》中,它是这么定义的: Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.
130 0
行为型-Chain Of Responsibility
|
程序员
单一职责原则(Single Responsibility Principle,SRP)(上)
单一职责原则(Single Responsibility Principle,SRP)
144 0
单一职责原则(Single Responsibility Principle,SRP)(上)
|
设计模式 项目管理 数据库
单一职责原则(Single Responsibility Principle,SRP)(下)
单一职责原则(Single Responsibility Principle,SRP)(下)
447 0
单一职责原则(Single Responsibility Principle,SRP)(下)
|
数据安全/隐私保护 iOS开发
单一职责原则(Single Responsibility Principle,SRP)(中)
单一职责原则(Single Responsibility Principle,SRP)(中)
234 0
单一职责原则(Single Responsibility Principle,SRP)(中)
|
测试技术
【愚公系列】2021年12月 面向对象设计原则(一)-单一职责原则(Single Responsibility Principle or SRP)
【愚公系列】2021年12月 面向对象设计原则(一)-单一职责原则(Single Responsibility Principle or SRP)
152 0