定义

就一个类而言,应该仅有一个引起它变化的原因。通俗的说,一个类只负责一项职责。

问题的由来

手机的功能多,但是每一项的功能都不强:

拍摄功能——>专业的摄像机和照相机

手机游戏——>PSP

网络摄像头——>专业摄像头

GPS功能——>专业GPS导航系统

每一个职责都是一个变化的轴线,当需求变化时会反映为类的职责的变化,如果一个类的承担的职责多于一个,那么引起她变化的原因就有多个,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,从而导致脆弱的设计。

解决方案

遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。

示例

 public interface Program{void draw();     //绘制图形void area();     //计算面积}public class DrawGraph implements Program{public void draw(){System .Out.PrintIn("绘制图形");}public void area(){}}public class AreaCount implements Program{public void draw(){}public void area(){System .out.printIn("计算面积");}}}

以上 图形计算程序只使用了正方形的Area()方法,永远不会使用Draw()方法,而它却跟Draw方法关联了起来。这违反了单一原则,如果未来因为图形绘制程序导致Draw()方法产生了变化,那么就会影响到本来毫不关系的图形计算程序。

应该把接口改成2个,将不同的职责分配给不同的类,使单个类的职责尽量单一,就隔离了变化,这样他们也不会互相影响了。

public interface Draw{void draw();     //绘制图形}public interface Area{void area();    //计算面积}

然后分别实现接口,如下:

设计模式六大原则——单一职责原则(SRP)相关推荐

  1. 大话设计模式三之单一职责原则、开放-封闭原则、依赖倒置原则、里氏代换原则

    单一职责原则 单一职责原则(SRP),意思就是说,功能要单一.准确解释是,就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或 ...

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

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

  3. android activity解耦,Android与设计模式:用单一职责原则为Activity解耦

    一.什么是单一职责原则单一职责原则(SRP:Single responsibility principle)又称单一功能原则,其定义为:一个类,应该只有一个可以导致变化的原因.光看概念 一.什么是单一 ...

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

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

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

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

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

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

  7. [置顶]       设计模式之六大原则——单一职责原则(SRP)

    定义: 应该有且仅有一个原因引起类的变更. There should never be more than one reason for a class to change. 优点: 1.类的复杂性降 ...

  8. 六大设计模式原则-单一职责原则

    一.单一职责原则定义 单一职责原则是面向对象五个基本原则(SOLID)之一,也是最简单的面向对象设计原则,用于控制类的颗粒大小.单一职责定义如下: 单一职责原则(SRP:Single responsi ...

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

    单一职责原则(SRP) 定义:就一个类而言,应该仅有一个引起它变化的原因 场景: 一个公司有3类员工,分别是 主管,程序员,销售 代码: using System; using System.Coll ...

最新文章

  1. android viewpager嵌套侧滑删除listview冲突问题
  2. 高通平台点亮LCD个人总结
  3. win7+ubuntu 13.04双系统安装方法
  4. 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!...
  5. mysql 5.6 安装_MySQL的安装,步骤详细
  6. 解决win10cpu使用率100_如何正确理解 CPU 使用率和平均负载的关系?看完你就知道了...
  7. Java 堆内存模型
  8. 事件EVENT,WaitForSingleObject(),WaitForMultipleObjecct()和SignalObjectAndWait() 的使用(下)
  9. CentOS查看分区的方式
  10. java学生考勤代码免费,基于jsp的学生考勤管理-JavaEE实现学生考勤管理 - java项目源码...
  11. 【七】zuul路由网关
  12. 教你用手机制作二寸证件照,操作简单,一学就会!
  13. micropython支持stm32型号_单片机仿真软件Proteus,可支持程序联调
  14. Helm-chart学习-简单介绍与使用
  15. PHP前一页 后一页 切换
  16. 如何根据函数,绘制出函数的图像
  17. ABB机器人基本知识。
  18. 【计算机毕业设计】家政服务中介网
  19. 一周Hard (2021.11.29-2021.12.05)
  20. 用华秋DFM作为PCB Viewer

热门文章

  1. android studio 模拟器内存不足,Android Studio模拟器的问题及解决办法
  2. 史上最简单的spark教程第二章-快速开发部署你的第一个Java+spark程序
  3. php guzzle批量请求
  4. 清华大学公开课线性代数2——第12讲:复数与复矩阵
  5. Encryption raised an exception
  6. 对抖音App评论进行抓取
  7. jpress转换html5,JPress技术精讲:JPress如何做到安装后重新加载的?
  8. pyenv、ipython、jupyter的安装使用
  9. 人工智能ai的有关专业术语_您需要知道的11个人工智能术语
  10. 【Java】JavaMail发送QQ邮件邮件