设计模式
步步为赢567
毕业于华中科技大学,硕士研究生
展开
-
我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
http://blog.csdn.net/lcl_data/article/details/8780140解决的问题:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。比如说我的hp笔记本,美国产品,人家美国的电压是110V的,而我们中国的电压是220V,要在中国能使用,必须找个变压器转一下电压才可以转载 2015-06-04 20:59:52 · 517 阅读 · 0 评论 -
我所理解的设计模式(C++实现)——模板方法模式(Template Method Pattern)
概述: 我们最近在开发一个支持多种压缩类型文件的解压缩且制作成pdf的一个应用。对我们的架构来说我们需要支持多种压缩文件类型,但却有固定的操作顺序(先解压缩,在读取里面的文件分析、制作pdf)。我们抽取他们的共同点:这些操作的固定顺序,把他放到我们的父类里;他们的变化点:这些个具体的操作,去留给不同的子类去实现。这个就是模板方法模式,他定义一个操作中的算法的骨架(例子中的固定的操作转载 2015-06-06 15:21:03 · 393 阅读 · 0 评论 -
设计模式C++实现(12)——备忘录模式2
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍备忘录模式的实现。 备忘录模式:转载 2015-06-06 16:46:29 · 367 阅读 · 0 评论 -
我所理解的设计模式(C++实现)——命令模式(Command Pattern)
概述: 我们去餐厅吃饭,我们是通过服务员来点菜,具体是谁来做这些菜和他们什么时候完成的这些菜,其实我们都不知道。抽象之,“菜单请求者”我们和“菜单实现者”厨师,2者之间是松耦合的,我们对这些菜的其他一些请求比如“撤销,重做”等,我们也不知道是谁在做。其实这就是本文要说的Command模式。 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对转载 2015-06-07 09:45:47 · 373 阅读 · 0 评论 -
命令模式
命令模式的作用?(1)命令模式能够较容易地设计一个命令队列。(2)在需要的情况下,可以较容易地将命令记入日志。(3)允许接收请求的一方决定是否要否决请求。(4)可以容易地实现对请求的撤销和重做。(5)由于加进新的具体命令类不影响其他的类,因此增加新的具体命令类很容易。(6)命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分隔开。什么是命令模式?转载 2015-06-07 10:19:18 · 376 阅读 · 0 评论 -
设计模式C++实现(10)——桥接模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍桥接模式的实现。 [DP转载 2015-06-07 13:32:26 · 296 阅读 · 0 评论 -
我所理解的设计模式(C++实现)——责任链模式(Chain Of Responsibility Pattern)
责任链模式是面向对象中的一种软件设计模式,它包含了一些命令对象和一些处理对象,每个处理对象决定它能处理那些命令对象,它也知道应该把自己不能处理的命令对象交下一个处理对象,该模式还描述了往该链添加新的处理对象的方法。概述: 辛辛苦苦了工作了一年,终于可以加薪了,向主管提交了加薪申请,主管一看不得了,自己职权不够,批不了,主管把申请上交总监,总监发现自己也批不了,申请到转载 2015-06-07 08:28:07 · 1403 阅读 · 0 评论 -
C++设计模式之职责链模式
http://www.jb51.net/article/55959.htm这篇文章主要介绍了C++设计模式之职责链模式,本文讲解了什么是职责链模式、什么场合下使用、代码实例等内容,需要的朋友可以参考下前言最近心情很差,因为生活,因为工作;所以想请几天假去丽江玩玩。就向项目经理提交了休假申请,我的项目经理向项目主管提交了我的休假申请,项目主管向部门转载 2015-06-07 09:00:32 · 437 阅读 · 0 评论 -
设计模式C++实现-解释器模式
概念解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 说明包含哪些角色?(1)AbstractExpression(抽象表达式):声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。(2)TerminalExpression(终结符表达式):实现与文法中转载 2015-06-07 11:22:49 · 2879 阅读 · 1 评论 -
c++设计模式--解释器模式
解释器模式(Interpreter)定义了一个类体系,用于实现一个小型语言的解释器。它与组合模式很相似,而且常常利用组合模式来实现语法树的构建。GOOD:通常当一个语言需要解释执行,并且你可以将该语言中的句子表示成为一个抽象的语法树时,可以使用解释器模式。 RES:http://hi.baidu.com/xuehuo_0411/item/41778e77d47f9d43ef1e转载 2015-06-07 11:45:45 · 548 阅读 · 0 评论 -
设计模式之访问者模式,C++实现
设计模式不能滥用啊 先借一张图 [cpp] // Visitor.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" // 访问者模式(vistor), 表示一个作用于某对象结构中的各元素的操作, // 它使你可以在不改变各元素类的前提下定义作用于这些元素的操作转载 2015-06-07 15:35:02 · 364 阅读 · 0 评论 -
桥接模式
先说说桥接模式的定义:将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化。桥接模式号称设计模式中最难理解的模式之一,关键就是这个抽象和实现的分离非常让人奇怪,大部分人刚看到这个定义的时候都会认为实现就是继承自抽象,那怎么可能将他们分离呢。这里引用《大话设计模式》里面的那个例子。这个例子中,每次添加一个新的手机品牌,则必须要添加相应转载 2015-06-07 13:26:33 · 365 阅读 · 0 评论 -
我所理解的设计模式(C++实现)——访问者模式(Visitor Pattern)
概述:我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中:对于银行柜台来说,他们是不用变化的,就是说今天和明天提供个人业务的柜台是不需要有变化的。而我们作为访问者,今天来银行可能是取消费流水,明天来银行可能是去办理手机银行业务,这些是我们访问者的操作,一直是在变化的。访问者模式就是表示一个作用于某对象转载 2015-06-07 15:02:39 · 376 阅读 · 0 评论 -
c++ 访问者模式
/** VISITOR模式:将操作独立于类之外,类根据自己需要的操作而接受相应的访问者。这样做的好处是如果需要实现一个新操作,类的结构不用变,特别是整个类层次的操作,如果要变,代价是比较大的。使用Visitor模式就可以保证增加操作非常简单方便,并且符合OCP了。 Visitor模式有一个吓人的概念:双分派,其实所谓的双分派也只不过是指:要定义一个操作,需要转载 2015-06-07 15:49:30 · 373 阅读 · 0 评论 -
C++设计模式之中介者模式
这篇文章主要介绍了C++设计模式之中介者模式,本文讲解了什么是中介者模式、中介者模式的使用场合、中介者模式的优缺点等内容,需要的朋友可以参考下前言我们都知道,这个国际政治是一门很深的学问,不玩政治的人是搞不懂的。那么多的国家,国家之间的关系又及其复杂;就好比现在,美国和中国有经济利益关系,美国又和日本有盟友关系,朝鲜又和中国有说不清道不明的关系;这些复杂的关系,稍微转载 2015-06-06 15:03:36 · 461 阅读 · 0 评论 -
设计模式----观察者模式Observer(C++)
假设一个数据有三个部分显示数据的, 分别是 max, min,average,我们可以写下这个一个类: 1 class Datashow 2 { 3 public: 4 void measurmentChanged 5 { 6 float temp = getTemplate(); 7 float humidity =转载 2015-06-06 14:22:22 · 393 阅读 · 0 评论 -
我所理解的设计模式(C++实现)——策略模式(Strategy Pattern)
概述:每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。 而策略模式就是对算法进行包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。类图与实例:转载 2015-06-06 12:37:30 · 393 阅读 · 0 评论 -
c++ 适配器模式(adapter)2
//http://blog.csdn.net/wuzhekai1985/article/details/6665542当两个系统的接口不一样时,我们就要重新封装一下接口,以便于当前系统的调用。软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的转载 2015-06-05 10:50:09 · 403 阅读 · 0 评论 -
设计模式C++实现(8)——代理模式
http://blog.csdn.net/wuzhekai1985/article/details/6669219 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一转载 2015-06-05 12:48:06 · 284 阅读 · 0 评论 -
设计模式C++实现(9)——享元模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》(DP)两本书。本文介绍享元模式的实现。 举个转载 2015-06-05 15:11:46 · 296 阅读 · 0 评论 -
c++设计模式之外观模式
迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,就可以通过第三者转发 迪米特法则的首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开 类之间的耦合越弱,越有转载 2015-06-05 15:59:20 · 369 阅读 · 0 评论 -
设计模式C++实现(11)——装饰模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍装饰模式的实现。 装饰模式:动态转载 2015-06-05 16:24:24 · 367 阅读 · 0 评论 -
享元模式(flyweight)
flyweight是轻量级的意思,中文这边翻译成享元,更容易让人理解一些。享元模式是为了应对大量细粒度对象重复的问题。程序中存在大量细粒度的对象,每次要使用时都必须创建一个新的对象,既影响了运行效率又增加了内存消耗。于是有了享元模式,享元模式提取出这些细粒度对象中间公共的状态(属性,我的理解),只生成一个实例对象,所有用到这些公共属性对象的地方,都指向这一个实例。根据我的理解,很多转载 2015-06-05 13:01:29 · 378 阅读 · 0 评论 -
装饰者模式及C++ 2
装饰者模式:动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。UML图设计原则:1. 多用组合,少用继承。利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。2. 类应设计的对扩展开放,对修改关闭。要点:1转载 2015-06-05 16:48:38 · 353 阅读 · 0 评论 -
C++设计模式——代理模式
前言青春总是那样,逝去了才开始回味;大学生活也是在不经意间就溜走了,现在上班的时候,偶尔还会怀念大学时,大家在一起玩游戏的时光。大学喜欢玩游戏,但是可悲的校园网,速度能把人逼疯了;还好,后来搞了一个游戏代理,总算能勉勉强强的玩了两年。时至今日,敲起键盘写设计模式的时候,又想起了那些美好的时光。好了,这是一篇技术文章,而不是抒情怀旧的散文;思绪再回到这篇文章上来,游戏代理,是个什么东西,有了转载 2015-06-05 12:42:10 · 322 阅读 · 0 评论 -
设计模式-外观模式
外观模式编辑外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。中文名外观模式外文名Facade类 型组合型目录1结构2适用场景3优点转载 2015-06-05 16:00:27 · 331 阅读 · 0 评论 -
设计模式C++描述----11.组合(Composite)模式
一. 举例这个例子是书上的,假设有一个公司的组结结构如下:它的结构很像一棵树,其中人力资源部和财务部是没有子结点的,具体公司才有子结点。而且最关健的是,它的每一层结构很相似。代码实现如下:[cpp] view plaincopy//公司类,提供接口 class Company {转载 2015-06-05 17:15:39 · 859 阅读 · 0 评论 -
设计模式C++实现(13)——中介者模式(Mediator)
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍中介者模式的实现。 中介者模转载 2015-06-06 14:50:43 · 382 阅读 · 0 评论 -
c++ 备忘录模式(memento)
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态[DP]。举个简单的例子,我们玩游戏时都会保存进度,所保存的进度以文件的形式存在。这样下次就可以继续玩,而不用从头开始。这里的进度其实就是游戏的内部状态,而这里的文件相当于是在游戏之外保存状态。这样,下次就可以从文件中读入保存的进度,从而恢复到原来的状态。这就是备忘录模式转载 2015-06-06 16:39:24 · 384 阅读 · 0 评论 -
策略模式【C++版】
一、 基本特点: a)根据不同的情况,创建不同的对象 b)每个对象方法名相同,方法的实现差别很大二、组成: a)抽象策略: 1个 b)具体策略 多个,封装了相关的算法和行为 c)调度类: 持有一个具体策略类的引用,供客户端使用三、代码实现:#incl转载 2015-06-06 12:25:23 · 345 阅读 · 0 评论 -
生产者/消费者模式
一:我哥们把数据存入redis缓存区二:我从缓冲器取数据,并作处理!详细代码如下://:取订单并判断$redis = new Redis();$conn_flag = $redis->connect(REDIS_TRANSLATE_USEFULL_HOST, REDIS_TRANSLATE_USEFULL_PORT);if ( !$conn_flag原创 2017-07-07 15:23:57 · 372 阅读 · 0 评论