(3)单一职责原则

  单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。例如,我们在写一个窗体应用程序,一般都会生成一个Form这样的类,于是我们就把各种各样的代码,像算法、数据库访问SQL都写到这样的类中,这就意味着,无论何种需求要来,你都需要更改这个窗体类,维护麻烦,不能复用,缺乏灵活性。

  如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。

  软件设计真正要做的内容就是发现职责并把那些职责相互分离。其实要去判断是否应该分离出类来,也不难,就是如果你能够想到一个的动机去改变一个类,那么这个类具有多于一个的职责,就应该考虑将类的职责分离。

(4)开放封闭原则

  开放-封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。这个原则具有两个特征:①是对于扩展是开发的(Open for extension),②对于修改是封闭的(Closed for modification)[ASD]。

  需求的变化,软件可以相对容易修改来适应需求的变化。

  开放-封闭原则的意思是你设计的时候要尽量让这个类是足够好,写好了就不要去修改了;如果新需求来,我们增加一些类就完事了,原来的代码能不动则不动。

  但绝对的对修改封闭是不可能的。无论模块是多么“封闭”,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块 对哪种变化封闭做出选择。他必须先猜测出最有可能发生的变化的种类,然后构造抽象来隔离那些变化[ASD]。等到变化发生时立即采取行动[ASD],即在 发生变化时,就及早去想办法应对更大变化的可能。

(5)依赖倒转原则(依赖倒置原则)

  解释为:抽象不应该依赖细节,细节应该依赖于抽象。说白了,就是针对接口编程。不要对实现编程。具体一点就是接口或抽象类,只要接口是稳定点,那么任何一个更改都不用担心其它部分受影响,这就使得无论高层模块还是底层模块都可以很容易地被复用。

•里氏代换原则

  通俗解释:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,父类都被替换为它的子类程序的行为不会发生变化。

  也正因为有了这个原则,使得继承复用成为了可能,只有当子类可以替换掉父类,软件单位的功能不会受到影响时,父类才能真正被复用,而子类能够在父类的基础上增加新的行为。由于子类的可替换性,父类才使得父类类型的模块在无需修改的情况下就可以扩展。里氏代换原则使开发封闭成为可能。

  依赖倒转其实就是谁也不要依靠谁,除了约定的接口,大家都可以灵活自如。依赖倒转其实可以说是面向对象设计的标志,用哪种语言编写程序不重要, 如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之那就是过程化的设计。遵循依赖倒转就是让程序都依赖抽象,而不是相互依赖。

转载于:https://www.cnblogs.com/xiaobang/archive/2013/05/29/3105638.html

设计模式 学习笔记(2)单一职责原则、开放封闭原则、依赖倒转原则相关推荐

  1. 设计模式中遵循的原则:单一职责、开发-封闭、依赖倒转

    设计模式中遵循的原则:单一职责.开放-封闭.依赖倒转 单一职责原则 一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者抑制这 ...

  2. 《大话设计模式》精髓理解——Chapter 01 - 05 开放封闭与依赖倒转

    简单工厂模式 编程是一门技术,更加是一门艺术 我的理解: 将主函数代码和选择函数代码分离,称选择具体操作的函数为工厂(Factory).典型例子是运算器,主函数只传入一个运算符和两个数,用工厂类进行进 ...

  3. 设计模式-设计原则-开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段...

    开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段,它们相辅相成,相互补充,目标一致,只是分析问题时所站角度不同而已. 转载于:https://www.cnblogs.com/jiangtao12 ...

  4. 单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特、合成复用

    用抽象构建架构,用实现扩展细节. 单一职责原则:实现类要职责单一: 接口隔离原则:在设计接口的时候要精简单一: 依赖倒转原则:面向接口编程: 里氏替换原则:不要破坏继承关系: 开闭原则原则:对扩展开发 ...

  5. 设计模式的七大设计原则:其三:依赖倒转原则

    依赖倒转原则: 基本介绍: 依赖倒转原则(Dependence Inversion Principle)是指: 1.高层模块不应该依赖低层模块,二者都应该依赖其抽象 2.抽象不应该依赖细节,细节应该依 ...

  6. 五大软件设计原则学习笔记1——单一职责原则

    五大软件设计原则SOLID: 单一职责原则(Single responsibility principle,SRP) 开放封闭原则(Open–closed principle,OCP) Liskov ...

  7. C#设计模式学习笔记:(20)职责链模式

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/8109100.html,记录一下学习过程以备后续查用. 一.引言 今天我们要讲行为型设计模式的第八个模式--职 ...

  8. 设计模式学习笔记1——概述 UML图 软件设计原则

    目录 1.设计模式概述 1.1.软件设计模式产生背景 1.2.软件设计模式概念 1.3.学习设计模式的必要性 1.4.设计模式分类 1.4.1.创建型模式 1.4.2.结构型模式 1.4.3.行为型模 ...

  9. 设计模式学习笔记总结

    设计模式七大原则 单一职责原则 对于一个类应该只负责一项职责. 接口隔离 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小接口上. 依赖倒转 高层模块不应该依赖底层模块,两者都应 ...

  10. 从零开始学习Java设计模式 | 软件设计原则篇:依赖倒转原则

    在本讲,我将为大家介绍软件设计原则里面的第三个原则,即依赖倒转原则. 概述 什么是依赖倒转原则呢?我们来看一下下面这段描述: 高层模块不应该依赖低层模块,两者都应该依赖其抽象:抽象不应该依赖细节,细节 ...

最新文章

  1. Domain Driven Design
  2. REUSE_ALV_GRID_DISPLAY事件子过程和cl_gui_grid类的事件对应关系
  3. 简单总结过去的2021年
  4. 9-Qt6 QString和QChar
  5. 无法安装软件之解决其一 (windows installer服务篇)
  6. 【云栖大会】用爱成就彼此 距云栖大会还有10天
  7. springmvc请求返回一个字符_response 返回 带双引号 的字符串解决办法 springmvc
  8. python内置函数__init__及__str__的区别
  9. IMPORT MULTIPLE JS
  10. php访问属性两种方式,使用PHP访问对象的属性
  11. python:生成器
  12. android+自动拨打电话,自动拨打电话 - 好玩的代码
  13. matlab编程绘制直方图,matlab绘制直方图程序
  14. 参考文献标准格式总结
  15. 骇客基础知识:第3部分
  16. cmake:execute_process
  17. (1) 微信公众号注册
  18. STL 容器详解——string 类
  19. matlab 动态图只能显示等平面吗,matlab平面浓度图
  20. 平开式窗帘有哪些选购要点?-好佳居窗帘十大品牌

热门文章

  1. 【SR汇总】基于深度学习方法
  2. 强大的jQuery图片查看器插件Viewer.js
  3. 敏捷估计与规划pdf
  4. 前端框架Bootstrap简单介绍
  5. PHP-Windows下搭建PHP-MSF环境【原创】
  6. Guice学习(一)
  7. 联想乐Pad_A1获取root权限
  8. linux vue node占用内存过大,vue 大型应用内存泄漏改造经验
  9. 单片机shell命令_MCU调试大法:使用串口实现简单shell功能
  10. android下获取无线wif信号、ssid、MAC等操作类