设计模式
文章平均质量分 85
puppet_master
coding can not change the world, but I will create my own world!
展开
-
设计模式学习笔记--简单工厂模式
背景:在开发过程中,经常会创建大量的对象,创建对象后还会涉及到一系列的初始化操作,而我们也不一定会只是在创建对象之后马上就使用对象,而且如果初始化操作很复杂,代码看起来就会非常杂乱,如果有变动,所有的初始化操作都要进行修改,相当难以维护。功能:将对象的创建和使用分离开来,专门用于创建对象并初始化。并且进行扩展后,可以根据参数不同,创建不同的对象。例子:// 设计原创 2015-06-06 22:53:47 · 1029 阅读 · 2 评论 -
设计模式学习笔记--状态模式
今天来学习一下设计模式中的状态模式。之前经常听说状态机之类的东东,自己也有用过,但是状态机和状态模式还是有一些区别,今天主要看一下状态模式的定义,例子,应用,最后再分析一下状态模式和我们所说的有限状态机之间到底是什么关系。一.状态模式的定义所谓状态,我们经常提到。比如水有几种状态,液态,固态,气态,而且达到一定条件之后,水可以在这三种状态之间相互转化。所谓状态模式,是指当一个对象的原创 2016-04-27 09:58:18 · 3415 阅读 · 1 评论 -
设计模式学习笔记--享元模式
一.简介今天来学习一下享元模式,英文名字叫flyweight pattern,字面上看是轻量级的意思,还是感觉中文翻译比较好理解。所谓享元,就是共享相同部分的意思。当我们在设计一个游戏的时候,比如我们要在场景中绘制三个相同的人物模型,如果我们直接创建三个一样的人物模型对象并绘制,那么我们就需要每次都读入人物模型相关的网格信息+贴图材质信息,很明显,这些东西只要有一份就可以了,而唯一不同原创 2016-05-10 14:05:15 · 1738 阅读 · 0 评论 -
设计模式学习笔记--迭代器模式
一.简介今天学习一下设计模式中的迭代器模式,迭代器模式是一种非常非常常用的设计模式,以至于太有用了,C#,Java都将其作为内置实现,C++也提供了STL的迭代器,我们每天都在用,却反倒感觉迭代器模式没那么重要了。毕竟我们自己实现的迭代器还是比不上语言原生提供的实现,但是为了学习,我们还是要看一下迭代器模式的实现,只有了解了原理,才能更好地使用。我们很多时候都是在处理一组对象,相对原创 2016-05-16 20:19:46 · 3888 阅读 · 0 评论 -
设计模式学习笔记--适配器模式
一.简介今天来学习一下23种设计模式中的适配器模式。说到适配器,可能我们第一个想到的就是电源适配器,没错,适配器模式干的活跟电源适配器是一样的。比如我们日常用电是220V的电压,有些电器可以直接使用,但是有些电器根本不会用这么高的电压,也许只需要几V的电压。而我们要是还想使用的话,就要给它增加一个电源适配器,通过适配器更改电压。适配器模式也是一样,比如我们有一个没有源码的库文件,只有相应的头文原创 2016-05-06 00:16:45 · 3465 阅读 · 0 评论 -
设计模式学习笔记--备忘录模式
一.简介今天来学习一下设计模式中的备忘录模式。说到这个模式,也许不太熟悉,不过相信写代码的时候,写错了之后,Ctrl+Z的功能用得还是比较多的,比如Word,Photoshop等编辑软件中,撤销功能都是必不可少的。而备忘录模式就是一个很好地实现撤销功能的一种设计模式。它可以让我们的系统恢复到之前的状态,嗯哼,传说中的月光宝盒!下面看一下备忘录模式的定义以及UML类图: 在不破坏原创 2016-05-06 14:46:32 · 1320 阅读 · 0 评论 -
设计模式学习笔记--组合模式
一.简介今天来学习一下组合模式。说到组合模式,可能比较陌生,但是有很多地方是非常适合使用组合模式的。比如我们电脑系统内的文件系统。文件包含在文件夹内,而文件夹有可能还被其他文件夹包含,整个文件系统呈一个树形结构。对于文件的操作,我们可以操作整个文件夹,相应的文件夹下所有的子文件,子文件夹都会被递归的操作。而我们并不需要知道文件夹下面是什么东东,只需要对根文件夹操作即可。下面看一下组原创 2016-05-07 23:38:06 · 2161 阅读 · 0 评论 -
设计模式学习笔记--桥接模式
一.简介今天来学习一下23种设计模式中的桥接模式。我们再设计系统时,如果某个类存在两个独立变化的维度,一种方案是使用多层继承,如果第一个维度有A个分支,第二个维度有B个分支的话,那么总共我们需要A*B个子类才能实现,这将是一个非常庞大的继承树。如果第一个维度增加了一个分支,那么我们需要再增加B个子类,扩展也变得很麻烦。而第二种方式就是我们今天要学习的桥接模式,通过桥接模式,我们可以将两原创 2016-05-08 15:49:45 · 1068 阅读 · 0 评论 -
设计模式学习笔记--中介者模式
一.简介今天来学习一下传说中的中介者模式。说到中介者,我们最容易想到的就是电话中继器,这里我们看看电话的演变过程吧。最早的电话只是两个通话的用户之间相连,这样的结构简单直接,操作最方便。但是随着使用电话的人数多了起来,为每两部电话之间架设一条线路很明显是不可能的,于是就有了电话中继器,记得以前经常看老电影里面,打电话的人要拿起电话,先打给接线员,说“给我接到XXX那”。没错,接线员就相当于中介原创 2016-05-09 18:43:47 · 1410 阅读 · 0 评论 -
设计模式学习笔记--职责链模式
一.简介说道职责链模式可能比较陌生,但是我们在工作生活中经常会遇到职责链。比如我最近有事,要请一天的假,那么我在系统上提交一个申请。如果这个假期很短,可能直接上级就批复了。但是如果假期比较长,直接上级没有办法审批,那么这个请求就会继续向上发,转到部门领导。部门领导审批了。而如果假期再长,那么这个请求也许会再上一级。这样的一个过程就是职责链。看一下职责连模式的定义:在责任链模式里,很多对象由原创 2015-11-15 22:50:29 · 2478 阅读 · 0 评论 -
设计模式学习笔记--外观模式
好久没写设计模式的blog了,这次重新回来填坑,先找一个最简单但是却最常用的设计模式来学习,外观模式。其实说是一个设计模式,其实我们在实际的编程中无时无刻不在用外观模式,可以说这个设计模式已经渗透到编程的各个方便,可能我们自己没感觉出来罢了。一.外观模式的定义所谓外观模式,原创 2016-03-26 22:04:26 · 1679 阅读 · 0 评论 -
设计模式学习笔记--观察者模式
一.简介观察者模式是一种灰常灰常重要的设计模式!在我们编程的时候经常会用到观察者模式,虽然我们自己可能并不知道。观察者模式又叫做发布-订阅模式。定义了一种一对多的依赖关系,让多个观察者同时监听同一个对象,该对象的状态发生改变时,会通知所有观察者对象,使他们更新自己。举个例子来说,比如我们在玩一个网络游戏,场景中出现了一个BOSS,那么所有在这个场景中的人都应该能知道BOSS出现了,换句话说原创 2015-10-18 18:58:20 · 1029 阅读 · 0 评论 -
史上最全设计模式导学录
原文地址:http://blog.csdn.net/lovelion/article/details/17517213基础知识 设计模式概述从招式与内功谈起——设计模式概述(一):设计模式从何而来?从招式与内功谈起——设计模式概述(二):设计模式是什么?从招式与内功谈起——设计模式概述(三):设计模式有什么用?附:个人观点转载 2015-10-14 19:38:02 · 880 阅读 · 0 评论 -
设计模式学习笔记--单例模式
一.面向对象的设计原则1.单一职责原则: 系统中每个对象只有一个单独的职责,对外提供一种功能,引起类变化的原因只有一个。2.开闭原则:即对修改关闭,对扩展开放。要更改时是通过增加代码进行的,而不是改动现在的代码,否则会产生不可预知的后果。3.依赖注入原则:要依赖于抽象,不要依赖于具体的实现,如果有类调用其他的类,就应该调用类的接口或者抽象类,而不是直接调用实现类。4.里氏替换原则:原创 2015-05-25 20:09:32 · 735 阅读 · 0 评论 -
设计模式学习笔记--工厂方法模式
学习过简单工厂模式,感觉很好用。在创建对象时,可以将复杂的初始化操作从客户端分离出来,简化客户端代码。大大的减少了代码修改的难度。而且可以通过参数不同,创建不同的对象。但是简单工厂模式也有一些弊端,违背了开放--封闭原则。即如果我们增加了一个产品,对应的工厂也要进行修改,即switch---case中要新增加一些分支条件,不利于扩展。所以就有了下面的工厂方法模式:工厂方法模原创 2015-06-07 21:48:04 · 878 阅读 · 0 评论 -
设计模式学习笔记--抽象工厂模式
纠结了好几天,总算是搞懂了点抽象工厂和工厂方法模式的一些区别了。两篇很好的文章:http://blog.csdn.net/superbeck/article/details/4446177http://blog.csdn.net/wyxhd2008/article/details/5597975抽象工厂其实跟工厂方法模式差不多,都遵循开放--封闭原则,使用工厂接口创原创 2015-06-10 22:21:20 · 1208 阅读 · 0 评论 -
设计模式学习笔记--策略模式
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。我们在使用一些功能时,有时有很多种实现方法,或者多种结果,但是都有同样的使用方法,即调用接口,这就是策略模式。例子:// 设计模式Demo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#in原创 2015-06-12 16:15:32 · 1046 阅读 · 0 评论 -
设计模式学习笔记--装饰模式
定义:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。形式:(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。(2) 装饰对象包含一个真实对象的引用(reference)(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。(4)原创 2015-06-13 18:34:53 · 1192 阅读 · 0 评论 -
设计模式学习笔记--代理模式
定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。UML图:(图片来自百度百科)例子:// 设计模式Demo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using原创 2015-06-14 14:52:23 · 1320 阅读 · 0 评论 -
设计模式学习笔记--建造者模式
一.简介建造者模式也是六个创建型设计模式之一,用于对象的创建过程。建造者模式的主要作用是将对象的构建和表示分离,使得同样的构建过程可以创建不同的具体对象。在创建一系列对象时,对象的创建过程大体相同,但是具体过程不同时,就可以使用创建者模式。比如我门画一个人的时候,都是需要画头,身体,胳膊和腿的,但是具体怎么画就大不相同了。建造者模式给出了一个创造时的模板,并且给出了创建对象的实际接口(或者是D原创 2015-10-17 13:15:41 · 858 阅读 · 0 评论 -
设计模式学习笔记--原型模式
一.简介原型模式是指使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。简单来说,就是通过一个对象,拷贝出一个新的对象,这个对象保持和被拷贝对象相同的状态,我们可以直接在这个基础上进行修改,而不必重新初始化一个对象,再进行相关更改。原型模式UML图如下:二.原型模式的原创 2015-10-16 11:48:36 · 844 阅读 · 0 评论 -
设计模式学习笔记--命令模式
一.简介我们正常写程序的时候,要实现一个操作,都是直接调用相应对象的函数进行操作,这样,行为的请求者和行为的实现者就是一种紧耦合的关系。举个简单的例子,比如我们设计一个游戏,按A键是攻击,按B键是放大招,那么我们可以直接将这按键的功能写在相应按键的对应函数上,但是这并不是好的设计,比如我们要进行修改,更换键位,那么修改的内容可能就比较多了。更好的方式是将玩家的输入都看成命令,攻击命令,技能命令原创 2015-11-05 21:07:59 · 1093 阅读 · 0 评论 -
《代码整洁之道》读书笔记
1.重复是一切邪恶的根源,许多原则与设计规则都是为了避免重复而产生的。如面向对象编程的基类,面向组件编程等等。2.添加有意义的语境,对于命名,起一个比较容易检查的命名。比如都在一个工程里面,就没有必要为所有类增加一个相同的前缀了,否则当你搜索的时候,所有的东西就都会出来了。。。。3.函数应该只做一件事,做好这件事,只做这一件事。而且要尽可能短小,让人一眼能从函数名字看出这个函数要干原创 2017-07-29 20:18:06 · 1398 阅读 · 0 评论