策略模式
意图
定义一系列的算法,将它们一个个封装起来,并且使得它们可以相互替换。策略模式使得算法可以独立使用与它的用户而变化。
举例
在我们使用的许多编辑器乃至编译器中,我们通常可以看到一些不同的换行符算法,有windows的\r\n,linux的\n,Mac用的\r等。将这些个换行符算法硬编码进我们使用的编辑器或者编译器软件中是不可取的。实际你也可以看到,基本所有的编辑器和编译器都有自己的切换换行符的功能。那么,原因是什么呢?
由于一些原因,我需要先学观察者模式,其实就是我需要这个模式去进行课设()
其实所有的设计模式如果只是在看的阶段去过一遍你的感触其实不会很深。相反,如果你在设计中因为一些设计导致出现了一些问题,需要一些设计模式来进行弥补的话,这种学习将会是很深刻的。当然啦,你如果一点设计模式都没有学过,你其实都不会意识到你需要这些设计模式。
所以,在我的设想中,一个设计模式好的学习流程应该是先去系统的学一学一些设计模式,就比如创建型设计模式中的几种,然后去进行使用,在使用的阶段你其实不时就会发现你的创建型设计模式和结构型设计模式通常会出现一些问题。或者吧,也可以先依照设计模式的三原则去进行设计架构,然后你一定会发现使用三原则的话会导致的一些疑惑的。
就比如我的课设,我在进行重构,想要重新规范下三原则中的单一职责原则时,我想要进行数据模块和渲染模块间的解耦,然后发现这种解耦会导致我的渲染操作不知道在哪里调用,这时我就回来看设计模式,发现这种问题可以通过行为模式中的观察者模式来解决,然后我就自我驱动的去学了,这才是一个学习的正反馈过程啊。
该文档进行设计模式的装饰模式的介绍
装饰模式,重要就在于装饰俩字。装饰模式存在的意义是在于不改变一个对象本身的基础上去给对象添加添加额外的新行为。这种模式可以用一种现实生活中的一个行为进行类比。最贴近的就是一个裸人不断的穿上衣服,这个不断穿衣服的过程就可以视为装饰模式的目的。体现在具体类的设计中就是对于一个类的属性的不断扩充。
我们再来从设计模式三原则的角度来分析一下。主要看到开放封闭原则。我们在设计中如果想要去添加一个类的属性,由于开放封闭原则,我们是不希望去直接修改类的设计的。那么我们就需要另外一种方法来进行这个属性的扩充,这种设计的方法或者说模式就被定义为装饰模式。
总的来说,这种模式的真正意义就在于解决类的扩展性问题
接下来我们进入组合模式。
给出定义:组合多个对象形成树形结构以表示”部分-整体”的结构层次。组合模式对单个对象(即叶子对象)和组合对象(即树这只鸟容器对象)的使用具有一致性。组合模式又可以称为”部分-整体”模式,属于对象的结构模式,将对象组织到树形结构中去,可以用来描述整体与部分间的关系。
前面我们看完了最后一种创建型模式:原型模式。接下来我们要进入到设计模式的第二大类:结构性模式。