【设计模式】单一职责原则


前言

面向对象设计原则是学习设计模式的基础,每一种设计模式都符合某一种或多种面向对象设计原则。通过在软件开发中适用这些原则,可以提高软件的可维护性和可复用性,让我们可以设计出更加灵活也更容易拓展的软件系统,实现可维护性服用的目标

面向对象设计原则包括:

设计原则名称设计原则简介重要性
单一职责原则类的职责要单一,不能将太多的职责放在一个类中★★★★☆
开闭原则软件实体对拓展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去拓展其功能★★★★★
里氏替换原则在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象★★★★☆
依赖倒转原则要针对抽象层编程,而不要针对具体类变成★★★★★
接口隔离原则使用多个专门的接口取代一个统一的接口★★☆☆☆
合成复用原则在复用功能时,应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系★★★★☆
迪米特法则一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此直接通信,那么这两个类就不应该直接发生通信,而是通过引入第三者发生间接交互★★★☆☆

一、单一职责原则定义

单一职责原则(Single Responsibility Principle, SRP)定义:一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。或者被定义为:就一个类而言,应该仅有一个引起它改变的原因

二、单一职责原则分析

一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。

单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则

三、单一职责原则实例

拿登录的例子来说,类图如下:
在这里插入图片描述
其中:

  • getConnection:是获取数据库链接的方法
  • findUser():是从数据库中查询用户是否存在

根据单一职责原则来说,这个登录类应该只做登录相关的事情,而链接数据库、从数据库查询这些功能不需要这个登录类来做,所以需要对这些功能进行拆分

拆分了三个类:

  1. LoginClass:只做登录相关逻辑的类
  2. UserDAO:负责用户表的增删改查,封装了用户表的全部操作方法,而登录功能本质上就是查询用户表的一个过程
  3. DBUtil:负责数据库的连接的工具类,该类封装着多个数据库的操作

根据单一职责原则重构的类图为:
在这里插入图片描述
通过单一职责原则重构后将使得系统中类的个数增加,但是类的复用性得到了提升。比如,DBUtil类可以被多个DAO类(操作数据库的类)使用,而UserDAO类呢,可以在多个需要获取用户或者对用户进行添加修改的功能中被使用,例如添加用户、删除用户、修改用户密码等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值