zoukankan      html  css  js  c++  java
  • 设计模式之单一职责、开放-封闭、依赖倒转

      

      单一职责:就一个类而言,只有一个引起它发生变化的原因。可以简单的理解为“单一功能”吧。

           拿手机来说,尽管手机的额功能比较强大,但是除了打电话是它比较独有的功能外,像其他功能:拍照、摄像等等,肯定没有专门的照相机,DVD的功能更高效。

           那么类也是一样的道理,如果一个类中,执行的行为比较多的话,这些行为的耦合度就较高,一旦其中某个功能要发生变化,,就可能会抑制该类中其他功能的实现

         所以,我们在编程时,一定要多思考类的职责的分类,尽量做到“单一职责”,使代码可以达到“可维护”、“可复用”、“可扩展”、“灵活性”

      开放-封闭:拿“一国两制”来说,不变的是两个国家的制度,不过在中国的制度上进行了扩展,这样,在香港和澳门的回归上,才变得相对容易些。

           当我们做需求时,也应该遵循该原则。毕竟对于一个需求的变更,在开发软件的过程中是一件“家常便饭”。

             简而言之,即:对于“扩展”时开放的,对于“修改”时封闭的。但是想要做到完全的“封闭”,是一件不太可能的事情。因为,或多或少的总汇忽略一些变化,不然你就可以预测未来了。

           那么我们该如何做到:对于在程序开发中可能经常处于频繁变化的代码,我们应该将其做出抽喜爱。但是,我们应注意:对于应用程序中的每一个部分都做成抽象的话,也不是一件好事情。

          谨记:拒绝不成熟的抽象与抽象本身同等重要。个人认为,如果每一部分都可以抽象的话,可能会使的代码整体看起来有点“臃肿”的感觉。

      依赖倒转:书中的例子是:电脑出现蓝屏,更换内存。

          确实是,因为电脑的主机上面的零件比较松散,也就是“耦合度”较低。如果收音机出现了问题的话,可能就只能找专业人员去修复了,尽管收音机比电脑更轻巧一些。

          A:高层模块不应该依赖于底层模块,而都应该依赖于抽象。(就比如CPU,全世界的厂商也就那几家,里面的复杂构造以及原理无需知道,我们的主板只需要提供按几个触点式的借口就可以)

          B:抽象不应该依赖细节,细节应该依赖于抽象

          依赖倒转可以说是面向对象的设计标志,用哪种语言编程无关紧要,如果编写时考虑的是如何针对抽象编程而不是针对细节编程,即程序中所有的编程都终止于抽象或者接口,那就是面向对象设计,否则则是面向过程设计。

        从该原则中,我们可以看出:涉及最多的也就是“继承性”、“多态性”。所以,“依赖倒转”,我个人认为:父类与子类之间的关系,但是子类必须能够完全替换父类,去实现系统本有的父类的功能

  • 相关阅读:
    linux下一步一步安装禅道项目管理工具
    tfw格式图解
    yaourt: a pacman frontend(pacman前端,翻译)
    OpenGL官方教程——着色器语言概述
    [翻译]opengl扩展教程2
    [翻译]opengl扩展教程1
    Git-it字典翻译
    解决 QtCreator 3.5(4.0)无法输入中文的问题
    Valgrind 3.11.0编译安装
    ubuntu linux 下wine的使用
  • 原文地址:https://www.cnblogs.com/charging-for-ycp/p/7374538.html
Copyright © 2011-2022 走看看