定义:
不要存在多于一个导致类变更的原因
一个类/接口/方法只负责一项职责
优点:
降低类的复杂度,提高类的可读性,提高系统的可维护性、降低变更引起的风险

以下通过案例进行理解单一职责原则:
创建一个Brid(鸟)类

创建一个Test测试类

我们会发现大雁用翅膀非是正确的,但鸵鸟飞不起来,所以我们需要进行判断

如果现在再传来一些特色的鸟类,那我们这个方法还要继续扩展,风险率就变高了,不遵从单一原则。
所以我们现在就从类的层次上将这个Brid拆分开。
创建一个FlyBrid类 表示 会飞的鸟

再创建一个WalkBrid类 表示 走路的鸟

在Test类中就将飞的鸟和走路的鸟进行一个区分

这个就是一个类的单一原则的体现,我们把一个类进行拆分,这样就使得每个类里面的方法职责是单一的,比较简单,也不至于修改的时候引入新的问题。
类图如下:

这个类图还是比较简单的
现在呢我们就是用test类去创建FlyBrid和WalkBrid两个类,对于Brid类已经没用了

对于职责呢在类层次上还是比较清晰的,这是对于类的单一职责
那接下来就用接口举例
还是用ICourse进行举例,创建ICourse接口
getCourseName获取课程名称的方法
getCourseVideo获取视频的方法
studyCourse学习课程的方法
refundCourse退款方法

对于上面的ICourse接口可不是只有一个职责,首先它一个大职责是获得课程信息( 课程名称和视频信息),那另外一个职责呢就是管理课程,和课程内容无关,例如学习课程,那如果我们学习课程就要获取课程名称和视频,那如果退了这个课程呐可能就获取不了这个课程名称和视频,那就是说退这个课程会影响课程这个接口的获取课程内容相关的变化,这两个职责是互相影响的,那我们就可以把这个接口拆成两个接口,一个接口负责获取课程信息,另一个接口管理课程
创建一个接口ICourseManager

再创建一个接口ICourseContent

现在我们来创建一个ICourse的实现类实现ICourseManager 和ICourseContent接口

类图如下:

课程的实现类实现两个接口,职责呢也是单一的,一个接口的修只对响应的实现类有影响,与其他的接口无关,这个就是从接口级别上来展示单一职责
接下来就是方法级别来展示单一职责:
创建一个类Method
写一个方法updataUserInfo 参数 可以更新userName 姓名 address 地址

拆分如下

这样两个方法的职责就是单一切清晰的,这样关于方法的单一职责就展示出来了。
在我们实际的开发中如果类都遵循单一职责可能会导致类太多出现爆炸,
所以我们的接口和方法一定要展示单一职责,类的单一职责就看项目的情况而定。

java设计模式之设计原则③单一职责原则相关推荐

  1. Java设计模式七大原则-单一职责原则

    目录 概述:设计模式的目的 设计模式七大原则 单一职责原则 单一职责原则注意事项和细节 概述:设计模式的目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等 ...

  2. 设计原则(单一职责原则 开放封闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则)

    设计原则 单一职责原则(SRP) 从三大特性角度看原则: 应用的设计模式: 开放封闭原则(OCP) 从三大特性角度看原则: 应用的设计模式: 里氏替换原则(LSP) 从三大特性角度看原则: 应用的设计 ...

  3. 设计模式原则—单一职责原则

    设计模式概念与作用: 设计模式是一套被反复使用的.多数人知晓.经过分类编目的优秀代码设计经验的总结.特定环境下特定问题的处理方法. 1)重用设计和代码 重用设计比重用代码更有意义,自动带来代码重用 2 ...

  4. 六大设计原则-单一职责原则

    1.开闭原则        2.接口隔离原则 3.依赖倒置原则 4.迪米特原则             5.里氏替换原则     6.单一职责原则 单一职责原则 针对的问题 类T负责两个不同职责:职责 ...

  5. Java设计原则——单一职责原则

    我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习. 学习从来无捷径,循序渐进登高峰. 目录 一.基本介绍 二.应用实例 1.示例1 2.示例2 3.示例3 三.单一职责原则 设计模 ...

  6. 【设计模式】软件设计七大原则 ( 单一职责原则 | 代码示例 )

    文章目录 一.单一职责原则简介 二.单一职责原则代码示例 ( 反面示例 ) 1.不遵循单一职责原则的类 2.测试类 三.单一职责原则代码示例 ( 正面示例 | 类的单一职责 ) 1.用翅膀飞的鸟 2. ...

  7. 设计模式个人总结,单一职责原则总结

    总结经验 近期自学Unity引擎,学到了关于设计模式这一块,以前学习Java多次接触设计模式,也在应用的开发过程中频繁使用.虽然开发过程中没有特意去强调使用设计模式,但设计模式的使用总是潜移默化的,现 ...

  8. 学习设计模式 - 六大基本原则之单一职责原则

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

  9. 设计模式--6大原则--单一职责原则

    2019独角兽企业重金招聘Python工程师标准>>> 单一职责原则(Single Responsibility Principle),简称SRP. 定义: There should ...

最新文章

  1. 专注,专注,还是专注
  2. 有外键约束的子表插入数据时出现的错误
  3. 修改程序配置文件 以及写一个结构体数组到文件(以及整数和结构体)
  4. Python代码发送post请求接口测试--转载
  5. python 折线图 尾部_Matplotlib 折线图plot()所有用法详解
  6. android ROM ---(1)高通平台 Android O 升级学习
  7. java c:if语句_java开发编译器:C语言逻辑控制语句if else if 的语法解析
  8. leetcode python3 简单题27. Remove Element
  9. C#按Esc后退出对话框
  10. 数据结构HashMap(Android SparseArray 和ArrayMap) 1
  11. php网页制作头部和尾部,用phpcms如何将静态页面制作成企业网站,头部加尾部
  12. 测试网速的c语言代码,如何用C语言编个测网速的小工具
  13. 教务管理系统数据表关系图_Web技术——简易班级管理系统(框架)
  14. Mac电脑彻底卸载office(Excel,Word)
  15. 软件著作权申请步骤流程
  16. 谷歌正式放弃与雅虎的广告合作计划
  17. 大一新生计算机强化训练小结,大一新生军训个人小结
  18. 新零售的坑,社交流量怎么填?
  19. 68 ping: Lacking privilege for raw socket.
  20. nas架设php网站,使用QNAP NAS虚拟主机功能架设多个网站

热门文章

  1. Java JDK代理、CGLIB、AspectJ代理分析比较
  2. Asp.net 关于错误提示 类型“XXX1”在未被引用的程序集中定义,必须添加对程序集XXX2的引用...
  3. 基于RulesEngine的业务规则实现
  4. GitHub发布桌面版但不包括Linux
  5. php可关于及||的非正常用法
  6. 再次遇到的问题:Unable to load dynamic library myext.so: undefined symbol
  7. 锐捷设备密码破解方法
  8. 路飞学城Python-Day182
  9. JavaScript特点、优缺点及常用框架
  10. 人工智能中的局部搜索算法