设计模式
Captain_MXD
这个作者很懒,什么都没留下…
展开
-
备忘录模式
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态原创 2016-04-02 14:41:40 · 312 阅读 · 0 评论 -
命令模式
1. 命令模式目录命令模式模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结1.1. 模式动机在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦转载 2017-09-11 10:25:23 · 288 阅读 · 0 评论 -
uml 类图依赖与关联的区别
依赖(dependency) 可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用。用带虚线的箭头。 关联(association) 他体现的是两个类、或者类与接口转载 2017-09-09 09:49:05 · 380 阅读 · 0 评论 -
浅谈UML中的聚合与组合(两者之间的区别)
大家都知道UML的类图中一般包含五种关系即 关联 聚合 组合 泛化 依赖 有些人可能会感觉组合跟聚合有点难区分 说难其实是相对其他几种关系而言 实际上想分清这两种关系一点也不难 聚合跟组合其实都属于关联 只不过它们是两种特殊的关联 因为本是同根生 所以它们之间难免会有相似之处 下面让我们一起来看一下它们之间有何不同聚合与组合的概念相信不用我在此赘述大家就已经了解了 下面直接上例子程转载 2017-09-09 09:35:05 · 1597 阅读 · 0 评论 -
观察者模式
3. 观察者模式目录观察者模式模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结3.1. 模式动机建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可转载 2017-09-09 09:08:42 · 198 阅读 · 0 评论 -
享元模式
目录享元模式模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结5.1. 模式动机面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正是为解决这一类问题而诞生的。享元模式通过共享技术实现相同或相似对象转载 2017-09-15 18:12:11 · 277 阅读 · 0 评论 -
建造者模式
一个人活到70岁以上,都会经历这样的几个阶段:婴儿,少年,青年,中年,老年。并且每个人在各个阶段肯定是不一样的呀,我觉得可以说世界上不存在两个人在人生的这5个阶段的生活完全一样,但是活到70岁以上的人,都经历了这几个阶段是肯定的。实际上这是一个比较经典的建造者模式的例子了。1.初识建造者模式建造者模式实际上是常用的设计模式。顾名思义,builder的意思是建造者或者建筑工人,谈到建转载 2017-09-15 16:09:11 · 293 阅读 · 0 评论 -
迭代器模式
C++实现迭代器模式版权声明:本文为博主原创文章,未经博主允许不得转载。说实话这个迭代器模式实现起来有点模糊 [cpp] view plain copy print?/* 迭代器模式:提供一种方法顺序访问一个聚合对象中个各个元素,而不暴露该对像的内部表示. 模式的动机: (1)一个聚合对象,如一个列表(List)或者转载 2017-09-14 10:12:26 · 209 阅读 · 0 评论 -
简单工厂和工厂方法模式的区别
一:简单工厂模式 1,概念简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。顾名思义工厂就是生产东西的,有原料(参数),模子(对象)就能生产出很多个具有相同功能的对象啦。2,uml图 3,代码示例[csharp] view plain copy print?"font-size:18px;"> class Progr转载 2017-09-14 09:54:52 · 620 阅读 · 0 评论 -
策略模式
目录策略模式模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结5.1. 模式动机完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以使用一种设计模式来使得系统可以灵活地选择解决途径,也转载 2017-09-13 21:20:25 · 203 阅读 · 0 评论 -
中介者模式
目录中介者模式模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结2.1. 模式动机在用户与用户直接聊天的设计方案中,用户对象之间存在很强的关联性,将导致系统出现如下问题:系统结构复杂:对象之间存在大量的相互关联和调用,若有一个对象发生变化,则需要跟踪和该对象关联的其他所有对象,并进行适当处理。对象可重用性差:由于一个对象和转载 2017-09-13 18:06:44 · 534 阅读 · 2 评论 -
备忘录模式
备忘录模式备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。介绍意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。何时使用:很转载 2017-09-13 10:35:24 · 265 阅读 · 0 评论 -
Reactor模式
前记第一次听到Reactor模式是三年前的某个晚上,一个室友突然跑过来问我什么是Reactor模式?我上网查了一下,很多人都是给出NIO中的Selector的例子,而且就是NIO里Selector多路复用模型,只是给它起了一个比较fancy的名字而已,虽然它引入了EventLoop概念,这对我来说是新的概念,但是代码实现却是一样的,因而我并没有很在意这个模式。然而最近开始读Netty源码,而R转载 2017-09-04 09:17:44 · 247 阅读 · 0 评论 -
工厂方法模式
#includeusing namespace std;/*工厂方法:1.加一层间接性,增加了灵活性屏蔽产品类。产品类的实现如何变化,调用者都不需要关心, 只需关心产品的接口,只要接口保持不变,系统中的上层模块就不会发生变化。2.典型的解耦框架。高层模块只需要知道产品的抽象类。 3.客户代码可以做到与特定应用无关,适用于任何实体类。原创 2017-03-27 11:53:24 · 341 阅读 · 0 评论 -
简单工厂模式
#includeusing namespace std;/* 简单工厂模式: 简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。 三种角色: 1.工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用, 创建所需要的产品对象。 2.抽象(Product)产品角色:原创 2017-03-27 10:51:04 · 383 阅读 · 0 评论 -
单例模式
c++模板实现单例类template class Singleton{ public: static T* getInstance() { static T *m_Instance=NULL; if(m_Instance==NULL) {原创 2017-03-27 17:48:55 · 482 阅读 · 0 评论 -
策略模式
//策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,//从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下//发生变化。策略模把行为和环境分开。环境类负责维持和查询行为类,//各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,//修改都不会影响到环境和客户端。//策略的抽象类,接口,抽象类的指针可以原创 2016-04-02 14:43:20 · 334 阅读 · 0 评论 -
代理模式
目录代理模式模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结6.1. 模式动机在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额外服务。通过转载 2017-09-12 17:47:44 · 255 阅读 · 0 评论