设计模式—关于概论部分的学习

2022-10-20  本文已影响0人  Mr丶Sunny

一、代码与设计模式

1.1. 我们写代码到底是在写什么?

大家可以把自己的项目或者是代码理解成我们就是在编写模块,并且设计它们之间的沟通。其实一个项目或者功能我们都可以理解成它们就是通过模块和模块之间的互相沟通来完成的。所以说设计模式,说白了就是在帮助我们更好的去设计模块,并且更好的组织它们之间的沟通。

企业微信截图_1663925426633.png

1.2. 设计模式在代码中扮演的角色是什么?

  1. 帮助我们更好的组织模块:通过一些设计模式,组织模块间的组成结构和模块划分
  2. 帮助我们更好的设计沟通:有的设计模式它的目的就是来帮助我们设计模块间如何沟通
  3. 提高代码质量:通过设计模式,让自己的代码看起来更加优雅,抛弃那些繁杂而无用的代码

1.3. 代码的设计原则是什么?

在开始学习设计模式之前我们非常有必要先来认识一下设计原则,因为设计模式其实可以看做是设计原则的一个具体体现。

设计原则如下图所示:

企业微信截图_16639256271463.png

假设我们有四种食物,分别是food1、food2、food3、food4,然后在点餐的时候我们有一个order类,我们可以通过order这个类点餐,现在的问题在于order这个类它要具体依赖于食物还是依赖于什么?

先看反面演示,如果把order类(点餐)直接依赖于具体的食物,那么对于不同的食物我们就要设置不同的点餐方法(orderFood1、orderFood2、orderFood3...),如果有四种食物我们就需要在order类的prototype上面放上四个方法,如果食物很多就要写很多点餐方法,显然这样会产生很多问题。比如我们依赖具体的食物,一旦我们具体的食物发生了变动,对应的点餐方法也要发生变动,新增了食物或减少了食物点餐的方法也要去新增或减少。

企业微信截图_16639256724105.png

要保证具体所使用的上层接口不会被下层接口的剧烈变动影响到,通常的做法就是在上层和下层之间加一层抽象层,所以我们可以不要让它依赖具体的食物,而是抽象出一个餐馆层,然后让我们的点餐类只依赖于这个抽象餐馆层而不是依赖于具体的某一个食物。

这个时候,为了避免下层这些具体的食物的变动会影响到具体点餐时点餐方法的变动,我们新增一个resturn函数作为中间层也就是餐馆层,餐馆层接收对应的食物名,然后新建一个list作为菜单,根据接收到的食物名返回对应的食物出去。

企业微信截图_16639256949623.png

此时上层的点餐接口也就是order可以改变一下,接收食物名然后返回餐馆层对应的食物

企业微信截图_16639257122575.png

这样下层的食物层无论怎么变动都不会影响到具体使用的order层,只需要去改变抽象层也就是餐馆层就可以了,这就是依赖倒置原则。

以上六大设计原则是我们开发时的指导思想,设计模式是设计原则的具体体现,在学习设计模式的时候就可以体会到这一点。

二、设计模式的分类

我们的各种设计模式可以分为四大类

企业微信截图_16639258749542.png

2.1. 创建型设计模式

通过以上四个设计模式可以看出创建型设计模式都是指导我们如何去创建对象。

2.2. 结构型设计模式

通过以上五个设计模式可以看出结构型设计模式是帮助我们更优雅的设计整体以及局部的代码结构。

2.3. 行为型设计模式

通过以上六个设计模式可以看出行为型设计模式目的是帮助我们组织模块的行为,组织它们之间怎么互相沟通来达成功能目标。

2.4. 技巧型设计模式

通过以上五个设计模式可以看出技巧型设计模式目的是帮助我们更好的优化代码。

下一篇:设计模式—关于封装与对象学习

本文由博客一文多发平台 OpenWrite 发布!

上一篇 下一篇

猜你喜欢

热点阅读