设计模式
文章平均质量分 79
a1317338022
这个作者很懒,什么都没留下…
展开
-
Memento 备忘录模式 使用Boost智能指针实现
#include "stdafx.h"#include #include #include #include using namespace boost;class Originator;class Memento{public: //在使用智能指针通过友元类访问私有成员时, //如果构造函数析构函数也是私有的话,编译时会报错的, //因为智能指针的释放操作不是在友元原创 2016-11-16 22:32:07 · 458 阅读 · 0 评论 -
Mayer 单例模式 线程安全型
#include "stdafx.h"#include #include #include using namespace std;//一般的单例模式是懒汉单例模式//建议不要用饿汉单例模式//Meyers单例模式能够保证在多线程的情况下//有且只有一个实例,但是不能保证初始化的//时候操作原子性,初始化数据安全性//建议使用Meyers单例模式//如果需要更高要求的单例原创 2016-12-07 22:52:26 · 705 阅读 · 0 评论 -
访问者模式 c++ boost
以下是我理解的观察者模式:#include "stdafx.h"#include using namespace std;//被访问对象//抽象访问者class ByVisitor;class Visitor;// "Element" class Element { public: // Methods virtual原创 2016-11-13 18:15:46 · 750 阅读 · 0 评论 -
UML类图符号 各种关系说明以及举例
转自:http://www.cnblogs.com/duanxz/archive/2012/06/13/2547801.htmlUML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等。依赖(Depe转载 2017-06-16 21:46:31 · 430 阅读 · 0 评论 -
适配器模式
#include "stdafx.h"#include #include #include #include using namespace boost;//客户端类class Target{public: Target(){} virtual ~Target(){} //该接口用于适配其他类的接口函数 virtual void requireFunc() {原创 2016-11-15 00:02:43 · 345 阅读 · 0 评论 -
装饰模式
#include "stdafx.h"#include using namespace std;//组件抽象类class Component{public:virtual void operate(){}virtual ~Component(){}protected://构造函数声明为保护的成员,外部不能创建,表明只能在内部创建Compo原创 2016-11-15 00:17:59 · 340 阅读 · 0 评论 -
代理模式
#include "stdafx.h"#include #include #include using namespace boost;//主角1抽象类class Subject{public: Subject(){} virtual ~Subject(){} //需要代理的2个功能函数 virtual void requestFunc1(){} virtual vo原创 2016-11-15 22:22:38 · 355 阅读 · 0 评论 -
Fadeca 外观模式
#include "stdafx.h"#include #include #include using namespace boost;//外观模式就是为需要在多个类实例调用接口函数//通过外观模式打包成一个统一的接口,方便调用class System1{public: System1(){} virtual ~System1(){} void func1(原创 2016-11-15 22:25:58 · 423 阅读 · 0 评论 -
Flyweight 享元模式
#include "stdafx.h"#include #include #include #include #include #include #include #include #include using namespace boost;class FlyWeight{public: FlyWeight(const std::string& strData)原创 2016-11-16 22:29:08 · 370 阅读 · 0 评论 -
Memento 备忘录模式
#include "stdafx.h"#include #include using namespace std;class Originator;class Memento{private: friend class Originator;//类Originalor内部可以访问Memento的私有成员 string __m_strData; Memento() { }原创 2016-11-16 22:34:08 · 332 阅读 · 0 评论 -
Template 模块模式
模块模式(Template)其实就是使用虚函数实现多态性,不同类的实例调用同一个接口,得到不同的结果:#include "stdafx.h"#include using namespace std;class ObstractClass{public: ObstractClass(){} virtual void func1() { cout << "func1" <<原创 2016-11-16 22:39:10 · 754 阅读 · 0 评论 -
Composite 组合模式
组合模式就是整体与部分的关系,当部分中需要动态的添加或移除时,可以考虑用组合模式,其中的关系类似与数据库中表与记录的关系:#include "stdafx.h"#include #include #include using namespace std;class Component{public: Component(){} virtual ~Component(){}原创 2016-11-16 22:40:47 · 446 阅读 · 0 评论 -
Interpret 解释器模式
概述: 未来机器智能化已然成为趋势,现在手机都能听懂英语和普通话,那我大中华几万种方言的被智能化也许也是趋势,我们的方言虽然和普通话相似,但是还是不一样的。这可能需要一个新的语法分析器来帮助我们。我们的解释器模式就是描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。但是解释一门自然语言是复杂的过程,我们以加减运算为例子来详细原创 2016-11-20 23:25:22 · 649 阅读 · 0 评论 -
职责链模式
避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止,这就是职责链模式。#include "stdafx.h"#include #include #include #include using namespace boost;//职责链模式就是一个请求提交给//职责链中一连串的对象,如果遇到了//符原创 2016-11-20 17:24:53 · 294 阅读 · 0 评论 -
抽象工厂模式 AbstractFactory
#include "stdafx.h"#include #include #include #include using namespace boost;enum Level1_Monster_Class{Level1_A = 1000,Level1_B}type_monster1;enum Level2_Monster_Class{Level2_C = 2000,Level2_原创 2016-11-17 22:18:33 · 462 阅读 · 0 评论 -
访问者模式
#include "stdafx.h" - =\00#include #include using namespace std;class Element;class Elem原创 2016-11-15 00:23:14 · 276 阅读 · 0 评论 -
Singleton 单例模式
#include "stdafx.h"#include #include #include #include #include using namespace boost;// class SingletonObject// {// public:// static shared_ptr getInstene()// {// if (NULL == __m_ptrSi原创 2016-11-19 12:02:31 · 273 阅读 · 0 评论 -
Observer 观察者模式
#include "stdafx.h"#include #include #include #include #include #include #include using namespace boost;//使用类的继承,抽象类可以实现多态和提高内聚性//主角1数据typedef struct _Subject1Data{ int iId; std::stri原创 2016-11-19 12:03:36 · 300 阅读 · 0 评论 -
Builder 创建者模式 构造者模式
#include "stdafx.h"#include #include #include #include using namespace boost;#define CC_SYNTHESIZE_PRIVATE(varType, varName, funName)\private: varType varName;\public: virtual varType get##f原创 2016-11-19 18:44:23 · 378 阅读 · 0 评论 -
Prototype
#include "stdafx.h"#include #include #include #include using namespace boost;#define CC_SYNTHESIZE(varType, varName, funName)\protected: varType varName;\public: virtual varType get##funName原创 2016-11-19 19:23:59 · 330 阅读 · 0 评论 -
Bridge 桥接模式
#include "stdafx.h"#include #include #include #include #include using namespace boost;#define CC_SYNTHESIZE(varType, varName, funName)\protected: varType varName;\public: virtual varType get原创 2016-11-19 22:47:58 · 317 阅读 · 0 评论 -
策略模式 Strategy
#include "stdafx.h"#include #include #include #include #include using namespace boost;class Strategy{public: virtual void AlgorithmStragegy() = 0;};class StrategyA : public Strategy原创 2016-11-19 23:16:49 · 323 阅读 · 0 评论 -
State 状态模式 状态机
#include "stdafx.h"#include #include #include #include #include #include using namespace boost;class Context;class State{public: virtual void Operation(shared_ptr) = 0; virtual void Ch原创 2016-11-20 10:06:13 · 456 阅读 · 0 评论 -
Mediator 中介者模式
Mediator.h文件:#include "stdafx.h"#include #include #include #include #include #include using namespace boost;typedef std::string ColleageAData;typedef long ColleageBData;class Mediator;原创 2016-11-20 11:30:03 · 471 阅读 · 0 评论 -
Command 命令模式
在开发过程中,我可能会需要向某些对象发送一些请求,但是我们不知请求的具体接收者是谁,也不知道被请求的操作是那个,我们只知道在程序运行中指定具体的请求接收者即可。打个比方,电视遥控器,我们只需要知道按那个按钮能够打开电视、关闭电视和换台即可,并不需要知道是怎么开电视、关电视和换台的。对于这种情况,我们可以采用命令模式来进行设计。 一、基本定义原创 2016-11-20 15:56:57 · 614 阅读 · 0 评论 -
工厂模式 Factory
#include "stdafx.h"#include #include #include #include using namespace boost;enum Product_No{PRODUCT_1, PRODUCT_2}g_enumProductNo; class Product{protected: Product(){} Product(const std:原创 2016-11-17 22:13:43 · 395 阅读 · 0 评论