软件设计(原则)的理解和认识

版本一:就是最简单的,最死板的东西,没有办法复用。只是单纯的吧值打印出来的,没有耦合的接触,是强耦合。
版本二:没有版本一那么耦合,解耦了很多,有了定义变量的意识。
版本三:在版本二的上面持续解耦,对运算结果进行了基本的封装。
后面的每一个版本都进行了不同程度的解耦
这些都说明了我们的原则非常重要,下面来说一下设计模式的几个原则。
那么设计模式有那几个原则呢?

单一职责模式
开放-封闭原则
依赖倒转原则
里式代换原则
迪米特法原则
合成/聚合复用原则

什么是单一职责原则呢?

单一职责原则(SRP):对于一个类,只有一个引起它变化的原因。
举例:我们来说一下人吧。家每天都有很多要做的事情,我们就说要一心一意的做一件事情,其实也是符合这个原则的。
小明既想要写作业,又想看电视剧,他选择了一边学习一遍看剧。然后小明的状态变成了,一会被学习难到,一会被剧情吸引。最后两件事情都没有做好。剧情也忘记了,学习也没学会。所以我们需要遵守单一职责原则。让你的心里只有学习

结论:举一反三,如果一个类承受的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。

什么是开放-封闭原则呢?

开放-封闭原则:软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。
举例:继续那上面的例子举例,本来对于小明来说学习就是一件很重要的事情,但是他还想要看剧,但是不能去修改之前学习的计划,那么就可以对自己的进行一个扩展啊。利用学习之间的休息时间看剧放松一下。这个样子的小明就遵守了开放-封闭原则
结论:面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。

什么是依赖倒转原则呢?

依赖倒转原则:
①高层模块不应该依赖于底层模块。两个都应该依赖抽象(抽象具体一点就是接口或抽象类)。
②抽象不应该依赖细节。细节应该依赖抽象。
其实就是说要针对于接口编程,而不是实现编程。
举例:举一个我们做项目的例子吧。提高班有很多项目,项目组长应该算是高层人员了,然后组员是底层人员。项目组长把任务分发下去,组员就根据任务来进行工作。只要任务没有问题,负责任务的人是可以更换的。他们之间都是通过任务来实现的,也就是说他们都是依赖于一个接口。

什么是里式代换原则呢?

里式代换原则(LSP):子类型必须能够替换掉他们的父类型。其实就是说一个软件实体如果使用的是父类的话,那么一定使用于子类,而且他察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成他的子类,程序也没有变化。
举例:比如现在有一个电脑要搬一台电脑。而大学生和老师都是人的子类。以前都是找了一个人小明搬电脑,但是小明今天请假了,有一个老师小李给搬电脑了。只要这个搬电脑的工作完成了,是感觉不到变化的。

什么是迪米特法原则呢?

迪米特法原则:如果两个类之间不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
举例:平时我们的网线坏了,那么你是找网线部门的某个人来修呢?还是找网线部门呢?其实我们只需要发个审批网线部门就会找人来给我们修,我们不需要知道是谁来修。

什么是合成/聚合复用原则呢?

合成/聚合复用原则(CARP):尽量使用合成/聚合,尽量不要使用类继承。

猜你喜欢

转载自blog.csdn.net/make_1998/article/details/107800125