设计模式中的7种设计原则

前言

最近准备好好回顾一下设计模式的知识,提高一下自己的代码质量,然后做个笔记。记录一下。

1、定义

代码设计的经验总结

2、作用

  • 减少重复工作、提高代码复用率
  • 提高代码的可维护性、可扩展性
  • 代码更加优雅、更容易使人理解

3、高内聚低耦合

  • 内聚性:模块内各个元素之间相互结合的紧密程度的度量,内聚性越强,独立性越高。通俗的来讲,一个人眼疾手快,身体各个部位配合十分到位,这是咱们所期望的。
  • 耦合性:模块间关联程度的度量,也就是说模块之间的各种关系,耦合性越强,独立性越差。通俗的来讲,你我都是当官的,咱俩之间尽量少有太密切的联系,不然谁出事了(模块被修改),另一个也会被连累。

4、类之间的关系:

  • 关联关系:其实就是咱俩有关系,比如说:一个Activity中声明了一个TextView,那么他俩指定是关联关系咯。关联关系还分好多种:双向关联、单向关联、自关联、多重性关联、聚合关系、组合关系。
  • 聚合关系:汽车和发动机的关系,发动机是汽车的一部分,但是我也可以独自存在,UML图中用空心棱形来表示,一般通过构造方法或者set方法传参的方法注入到整体对象中。
  • 组合关系:头和嘴的关系,头没了,嘴也就没了。整体对象控制着成员对象的生命周期,UML图中用实心棱形来表示,一般直接通过在构造方法中new一个实例来注入到整体对象中。
  • 依赖关系:是一种使用关系,一般通过方法中的参数传入另一个类的对象,比如说Driver类和Car类,void drive(Car car),驾驶依赖汽车,那么Driver类就依赖Car类,在UMl中是依赖类用一个虚线的箭头指向被依赖的类。
  • 泛化关系:那么就是一个继承的关系,很好理解,在UML中子类用一个空心三角形来指向父类。
  • 实现关系:那么就是一个实现接口的关系,也很好理解,在UML中实现接口的类用一个虚线的空心三角形来指向接口。

5、七大设计原则

  • 单一职责:一个类只负责一个功能中的相应职责,这个类应该只有一个引起它变化的原因。通俗的来讲,一个老师最好只教一种科目,不要又教语文又教数学又教英语(一个类不能太“累”)。一个修理工,如果把各种工具,扳子,改锥,钳子等等工具都带在身上,是不是太累了(一个类不能太“累”),那么如果想要更换扳子,钳子的型号,那么还得从身上都拿下来换一下(拥有不止一个让他变化的原因),那么其他的修理工也想用扳子和钳子,但是又不能复用,只能自己再买一个新的带身上,结果每个修理工身上都带有一套工具(重复代码),如果每个修理工都用这些工具,那么没必要没人都带工具,把工具放到一个工具箱(拆分成单一的类),谁用的时候取一下就可以了(代码复用)。
  • 开闭原则:一个实体(类、函数、模块)等,应该对外扩展开放,对内修改关闭。也就是说在添加新功能时,不需要去修改以前的代码,直接加功能就行。通俗的来讲,一座城市,肯定是随着时间的推移而发展的,那么我要在这座城市盖个游乐场(扩展),不应该对体育场进行整改(修改),你盖就盖你的呗,去野地去盖,不要去修改其他已经存在的东西。(对外扩展开放,对内修改关闭)。
  • 里氏代换原则:子类必须替换掉它们的父类型,将一个基类对象替换成一个子类对象,程序没有任何的异常。通俗的来讲,我喜欢动物,我一定喜欢狗;我喜欢狗并不代表我喜欢所有的动物。通常我们用父类的对象来进行定义,再在运行的时候再用子类对象进行替换,比如说:List<String> list = new ArrayList<>();包括我们再开发当中定义一个BaseActivity,我们在基类中写好基本的方法,那么添加一个新的Activity新的功能只需要继承BaseActivity即可。
  • 依赖倒转原则:细节应该依赖于抽象,而抽象不应该依赖于细节。其实还是说了一个抽象类的事情,举个例子来说,小明阅读漫画,需要在read方法参数中传入漫画,那么小明又想阅读小说,那么没必要再创建一个阅读小说的方法,让漫画和小说都继承书籍,然后read方法中传入书籍这个父类,那么无论我们传入的是漫画还是小说,都能实现阅读。
  • 接口隔离原则:使用多个专门功能的接口,而不是使用单一的总接口。其实这个是很好理解的,得符合单一职责嘛,如果接口中方法太多,那么我如果有需要实现这个接口中的某几个方法,就必须实现接口中所有的方法,会出现大量的空方法。
  • 合成复用原则:尽量使用组合,而不是继承。比如说小明要玩球,不应该继承球类的play方法,而是去调用它,而且应该是还有好多种球类,比如篮球,足球,排球等去继承球类。合成复用原则其实我们在大部分编程过程中都会遵守的。
  • 迪米特原则:一个模块或对象应尽量少的和其他实体类发生相互作用,使得模块相对独立,降低耦合性。通俗的来说,我找小明借钱,小明的钱是找小红借的,那么这个借钱的事儿啊,我只接触我的朋友小明,小明和小红怎样,我不管,跟我没关系,到时候出什么事情了,我也只需要跟小明解决,而不是我们三个人都有关系。

总结

对一些定义大体做了一下介绍,加深了一下记忆,包括七大设计原则也是很费劲的想一些生活中的例子来理解,可能有的地方的比喻不是那么的形象,但是我觉得还是能加深理解,这些基本的定义在以后的学习中通过应用实践我们再逐步的更深入的去理解。




猜你喜欢

转载自blog.csdn.net/pengbo6665631/article/details/80788592