博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式 学习笔记(2)单一职责原则、开放封闭原则、依赖倒转原则
阅读量:5127 次
发布时间:2019-06-13

本文共 1358 字,大约阅读时间需要 4 分钟。

(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

你可能感兴趣的文章
Mybatis的使用
查看>>
Node.js 连接 MySQL
查看>>
ACM-ICPC 2018 world final A题 Catch the Plane
查看>>
那些年,那些书
查看>>
如何进行库存管理?
查看>>
面向对象六大基本原则的理解
查看>>
新手程序员在工作中需要注意的问题
查看>>
注解小结
查看>>
HTML DOM笔记
查看>>
【转】Linux 虚拟内存
查看>>
java代码编译与C/C++代码编译的区别
查看>>
Bitmap 算法
查看>>
转载 C#文件中GetCommandLineArgs()
查看>>
list control控件的一些操作
查看>>
精读《useEffect 完全指南》
查看>>
SNF快速开发平台MVC-EasyQuery-拖拽生成SQL脚本
查看>>
DrawerLayout实现双向侧滑
查看>>
CentOS下同步时间并写入CMOS
查看>>
Java基础-一个java文件多个类的问题
查看>>
Maven安装jar包到本地仓库
查看>>