策略模式

意图

​ 定义一系列的算法,将它们一个个封装起来,并且使得它们可以相互替换。策略模式使得算法可以独立使用与它的用户而变化。

举例

​ 在我们使用的许多编辑器乃至编译器中,我们通常可以看到一些不同的换行符算法,有windows的\r\n,linux的\n,Mac用的\r等。将这些个换行符算法硬编码进我们使用的编辑器或者编译器软件中是不可取的。实际你也可以看到,基本所有的编辑器和编译器都有自己的切换换行符的功能。那么,原因是什么呢?

Read more »

观察者模式

由于一些原因,我需要先学观察者模式,其实就是我需要这个模式去进行课设()


感悟

​ 其实所有的设计模式如果只是在看的阶段去过一遍你的感触其实不会很深。相反,如果你在设计中因为一些设计导致出现了一些问题,需要一些设计模式来进行弥补的话,这种学习将会是很深刻的。当然啦,你如果一点设计模式都没有学过,你其实都不会意识到你需要这些设计模式。

​ 所以,在我的设想中,一个设计模式好的学习流程应该是先去系统的学一学一些设计模式,就比如创建型设计模式中的几种,然后去进行使用,在使用的阶段你其实不时就会发现你的创建型设计模式和结构型设计模式通常会出现一些问题。或者吧,也可以先依照设计模式的三原则去进行设计架构,然后你一定会发现使用三原则的话会导致的一些疑惑的。

​ 就比如我的课设,我在进行重构,想要重新规范下三原则中的单一职责原则时,我想要进行数据模块和渲染模块间的解耦,然后发现这种解耦会导致我的渲染操作不知道在哪里调用,这时我就回来看设计模式,发现这种问题可以通过行为模式中的观察者模式来解决,然后我就自我驱动的去学了,这才是一个学习的正反馈过程啊。


Read more »

代理模式

简介

最后一种结构型模式了,会赢的

​ 通过代理模式的名字我们也可以了解到这个模式的重要之处就在与这个”代理”二字。我们举几个生活中的例子吧。就比如之前闹的沸沸扬扬的俄乌冲突,其实就是一场代理人战争,乌克兰实际上就是美国的代理人,为什么需要这个代理人呢,因为本人不好下场。换句话说,使用代理人的一般场景就是自己动手的代价是无法接受的,需要通过一种手段来减少损失,这就是代理的关键之处。

Read more »

享元模式

定义

运用共享技术有效地支持大量细粒度的对象。其目的是通过共享对象来减少内存的使用,尤其是当系统中有大量相似对象时,享元模式可以帮助减少对象的创建,从而降低系统的内存消耗。

​ 具体来说,享元模式将对象的共享部分不共享部分分开,尽可能地将重复的对象共享,而将每个对象的独立部分(外部部分)保留在每个实例中。

Read more »

本文将进行结构性模式的外观模式的分析

外观模式

定义

​ 为子系统中的一组接口提供一个统一的入口。外观模式定义类一个高层系统,使得下层的子系统更加容易使用。在外观模式中,外部与一个子系统的通信可以通过一个统一的外观对象进行。外观模式又叫做门面模式,它是一种对象结构型模式。

Read more »

该文档进行设计模式的装饰模式的介绍

装饰模式

简介

​ 装饰模式,重要就在于装饰俩字。装饰模式存在的意义是在于不改变一个对象本身的基础上去给对象添加添加额外的新行为。这种模式可以用一种现实生活中的一个行为进行类比。最贴近的就是一个裸人不断的穿上衣服,这个不断穿衣服的过程就可以视为装饰模式的目的。体现在具体类的设计中就是对于一个类的属性的不断扩充。

​ 我们再来从设计模式三原则的角度来分析一下。主要看到开放封闭原则。我们在设计中如果想要去添加一个类的属性,由于开放封闭原则,我们是不希望去直接修改类的设计的。那么我们就需要另外一种方法来进行这个属性的扩充,这种设计的方法或者说模式就被定义为装饰模式。

​ 总的来说,这种模式的真正意义就在于解决类的扩展性问题

Read more »

接下来我们进入组合模式

给出定义:组合多个对象形成树形结构以表示”部分-整体”的结构层次。组合模式对单个对象(即叶子对象)和组合对象(即树这只鸟容器对象)的使用具有一致性。组合模式又可以称为”部分-整体”模式,属于对象的结构模式,将对象组织到树形结构中去,可以用来描述整体与部分间的关系。

Read more »

前面我们看完了最后一种创建型模式:原型模式。接下来我们要进入到设计模式的第二大类:结构性模式

Read more »

接下来进入桥接模式

首先来看到给出的定义:将抽象部分与它的实现部分分离,使得它们都可以独立的进行扩展变化。

Read more »