面向对象设计原则01-单一职责原则-提高软件的可维护性和可复用性

本文介绍单一职责原则,即一个对象应只含单一职责且封装在一个类中,一个类仅有一个引起变化的原因。以客户关系管理系统为例,展示如何用该原则重构类,重构后各层类职责单一,依赖关系明确,实现了解耦和高内聚,方便功能调整。

单一职责原则

  • 一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。
  • SRP==Single Responsibility Rrinciple
  • 就一个类而言,应该仅有一个引起它变化的原因。
  • 更高的内聚性,完全的低耦合
  • 将不同的职责分离

示例

  • 比如,一个客户关系管理系统,如果设计成一个类,该类中同时有
    • getConnection():Connection
    • findCustomers():List
    • createChart():void
    • displayChart():void
  • 而对应这些方法,分别是为了实现
    • 数据库连接功能
    • 查询所有客户信息
    • 创建功能图表
    • 显示功能图表
  • 这种情况下,这个类就需要重构,用单一原则来重构

创建类

  • DBUtil类,专门负责数据库连接,在其中给出getConnection方法
  • CustomerDAO类,负责操作数据库中的Customer表,全部的CRUD操作都在其中,自然也包括findCustomers方法,返回客户列表信息
  • CustomerChart类,负责图表的生成和显示,可以包括crreateChart和displayChart方法

重构以后,类之间的依赖关系

  • CustomerChart是顶层的,依赖于CustomerDAO提供相应的数据
  • CustomerDAO操作数据库,事先要给出数据库连接,肯定依赖于DBUtil类

每一个类的职责单一化

  • 职责单一的理解上,其实还有一个方面,那就是职责相似的进行的集中,尽可能追求高内聚
  • 方便功能的调整,添加和修改相应的功能,不会引发其它类的太多变化
  • 尽可能的完成了解耦,尽可能追求高内聚
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值