c++设计模式总结 好久没写博客了 实在是忙

具体代码就不贴出来了   通俗易懂的理解方式      原创

c++设计模式:

简单工厂模式

工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品;在工厂中加工产品,使用产品的人,不用在乎产品是如何生产出来的。从软件开发的角度来说,这样就有效的降低了模块之间的耦合。

使用情景: 
  在不确定会有多少个处理操作时应该考虑使用简单工厂模式,如针对同样的接收到的数据,处理的逻辑可能会不同,可能以后还会增加新的操作。 
案例: 
如果实现计算器的功能时,对于同样的输入数据,可能执行加、减、乘、除,甚至其他的功能。因此可以抽象出一个操作的抽象类或是接口,提供一个统一的处理方法(此处为process),然后每种操作创建出一个子类出来。而判断具体使用哪个具体的实现类是在工厂类中进行判断的(将存放操作的变量传递给工厂的生产方法)。工厂类始终返回的是这个抽象类,这样如果对原有功能进行更改或是新添加新的功能,也不会对原来的其他类做修改,只编译修改的那个类或是新的类就可以了。 
这样就做到了把耦合降到最低,同时也便于维护。

简单工厂:针对同样的数据,不同的操作用同一个接口

工厂方法:针对同样的数据,不同的操作用不同的接口

抽象工厂:针对不同的数据,不同的操作用不同的接口

策略模式:依赖c++的多态,抽象类的指针可以访问所有子类对象,(纯虚函数),可以用一个指针访问所有策略的实现类

单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式(不能让一个程序打开两次  如:不能同时打开2个迅雷  迅雷用的单例模式)

访问者模式:适用于数据结构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。访问者模式使得增加新的操作变的很容易,就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中(做任何更改不需要修改基类,不依赖虚函数)

观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。(QT的信号机制,Windows的消息机制都应用了观察者模式,还有订阅邮件,邮件到了就会给你发邮件)

建造者模式:使得产品内部表象可以独立地变化,客户不必知道产品内部组成的细节。可以强制实行一种分步骤进行的建造过程。用一个接口完成不同的操作,需要对客户的需求进行把握。(如:登陆QQ,自动选择所在地的服务器)

解释器模式:给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。(如:360读取lua脚本,这个细节的实现就是解释器模式)

命令模式:把发出命令的责任和执行命令的责任分割开,委派给不同的对象允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否执行,何时被执行以及是怎么被执行的。(命令模式在客户端与服务器之间用的最多 (C/S架构))

模板模式:不同的子类可以以不同的方式实现这些抽象方法,

从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,

而将逻辑的细节留给具体的子类去实现。(适用于本地化,做一个软件,在日本是日文,美国是英语...)

桥接模式:将抽象化与实现化脱离,使得二者可以独立的变化,

也就是指在一个软件系统的抽象化和实现化之间使用组合聚合关系而不是继承关系,从而使两者可以独立的变化。(相当于配电脑去装机,把各个模块组合到一起)

适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。

外观模式:外部与一个子系统的通信必须通过一个统一的外观对象进行。每一个子系统只有一个外观类,而且此外观类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个外观类。(多个子系统方法都需要一个外观类统一管理,用统一的接口方便消费者使用)

享元模式:享元模式大幅度的降低内存中对象的数量,使用享元模式主要是为了优化内存,相同功能可以并行使用。

原型模式:允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构,原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。

责任链模式:在责任链模式中,很多对象由每一个对象对其下家的引用而接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。(例如:晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个漂亮的MM哎,找张纸条,写上“Hi, 可以做我的女朋友吗?如果不愿意请向前传”,纸条就一个接一个的传上去了,糟糕,传到第一排的MM把纸条传给老师了)

中介者模式:中介者模式包装了一系列对象相互作用的方式,

使得这些对象不必相互明显作用。从而使他们可以松散偶合。

当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。(如:TCP/IP打洞技术)

装饰模式:装饰模式以对客户端透明的方式扩展对象的功能是继承关系的一个替代方案,提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。

状态模式:意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。(如:到了晚上12点要睡觉,到了早上8点要起床...这就是状态)

合成模式:将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。(用于树状结构)

时间: 2024-10-05 04:43:23

c++设计模式总结 好久没写博客了 实在是忙的相关文章

好久没写博客了

好久没写了,混迹了这么久,不是没空写. 只是怕写出来的东西误人子弟. 是时候放慢脚步了,多看看书,虽然书有时看不下去,但偶尔还能印象到心里,等以后可能会想起来. 保持投入的激情,一定要投入 似 水流 年

很久没写博客了!今天来写个八方向摇杆基于quick cocos2d

首先!马上毕业了最近在找工作,还算有点时间好久没写东西了就写点东西吧! 进入主题,首先先思考算法和逻辑.把圆分为八块,每块45度.正上,正下,正左,正右会被X和Y 平分.一边一半各是22.5度.(PS:开始想用 斜率的,但是发现斜率是tan的图像,也就是无限趋近最大值和最小值的不好做判断最后就用了cos也可用sin)思考计算的过程图如下: 准备工作完了就开始,首先控制的人物有八个状态分别是:上,下,左,右,左上,左下,右上,右下的动画.不同的状态对应着不同的动画,触控点和圆心点作比较来判断是哪个

已经两年没写博客了,今天回归了,拒绝安逸

从事VC++开发已经2年了,代码写了不少,但是除了上班期间,下班很少学习新知识了,这是我不能容忍的. 今天开始学习Java,学习一门新的语言可能能够获取到一些新的编程思维 加油!! 附:我的淘宝店 http://new.zhangguibang.com/fenxiang/wxpromo?userid=429297572&actId=4292975721440901863995&type=item

好久没有写博客了

总结下js中匿名函数的写法~好几天没写博客了。。。

小哥最近很是心烦啊,不仅仅要继续以现任前端小白,未来前端攻城狮的身份苦逼学习,还要用剩余的时间去完成毕业设计.早知如此,当初我为毛要报考数学这么个苦逼专业....昨天一整天的时间在研究毕设,感觉代码已经不认识我了...今天在学习中,突然发现了匿名函数的调用方法.原以为匿名函数是个高冷的生物,只有如下这一种调用方法: (function() { alert('water'); })(); 当然了...设参数跟上面是一样的方法: (function(i) { alert(i); })('water'

好久没写的博客_数组的长度等小问题

好久没写,有点懒,有点忙. 但我觉得最主要的原因是,我最近遇上的问题都没什么关联性,很难让我在一篇博客里把他们都串联起来. 一个问题写一篇博客又有点小题大做了. 不管怎么样堆积了那么多问题,还是先整合一下吧. 1.声明在使用前 当然可以直接先定义再使用,但是我本人不喜欢.我更喜欢用main函数打头,不然找它要找半天. 一般情况下是函数的声明,别忘记就行.容易出错的是算上结构体的时候. 由于我不清楚结构体的声明格式,因此把结构体放在main函数前,当然这还是可以接受的. 但是会存在结构体作为函数参

【程序人生】写博客一周年纪——横空出世

前言 “吾日三省吾身”,<论语>如是说:“我是靠总结经验吃饭的”,毛主席如是说:“做人要像竹子一样,每攀登一步,就做一次小结”,名人亦如是说.可见,总结对于人生的成长有着多么重要的作用.我等凡人做不到曾子“日三省”,但一年总结一次还是可以办到的.从去年的6月份开始正式写博客,到现在不知不觉已经一年了,正好6月又是一个大考月,也是对过去一个阶段的学业总结,这里就对过去一年写博客的经历做一些总结吧. 一.为什么要写博客 至于我写博客的初衷,这和我工作经历和面试经历有关.这里我想简单回忆一下过去7年

关于写博客,看博客

每次看到很多人坚持写那么多的好博客,我都会产生怎么自己不写博客的想法.于是乎,在激情的驱使下就会随手写几段文字,然后就不了了之了. 今天又看了cici珵的博客(北大cs本科,博士,美女),再次萌生了写自己的博客的想法. (似乎又要开始写自己这个人怎么怎么样,兴趣广泛,但是做事情不够努力:目标很多,但是不能坚持去做,这些对个人的分析了.反正每次真正着手做一件事情之前总是想分析一下之前怎么怎么做的不好.) 关于cici珵,是昨天刷知乎,看到覃超(覃超大魔王)的知乎专栏文章,关于楼教主从google离

为什么我要写博客

记得两年前我申请过开通博客后来没被批准,后来不了了之. 工作中经常会遇到自己解决不了的问题,也都是在网上去查询相关的博客,学到了很多东西! 想想之前没有写博客的时候,学过很多东西,也都记录了笔记,到现在都不知道放到哪里去了,而写到博客里面,不仅自己可以使用,在忘记的时候拿出来看看,还可以为遇到同样问题的朋友提供一点参考,去解决遇到的同样问题,一起节省时间. 偶尔还可以用博客吹吹牛,调侃调侃