C++设计模式
文章平均质量分 74
thinkme2010
这个作者很懒,什么都没留下…
展开
-
Qt C++ chain of responsibility模式
chain.h#pragma once#include class CHandle{public:CHandle():m_handle(0){}CHandle(CHandle *hadle):m_handle(hadle){}virtual ~CHandle(){if (m_handle){delete m_handle;}}原创 2013-06-09 14:44:12 · 570 阅读 · 0 评论 -
Qt C++ composite模式
组合模式简单来说就是为了处理类似树型结构的方案设计,充分展示父子关系,精确查找各个item。composite.h#pragma once#include class CAbstractComposite{public:virtual void operateName() = 0;virtual void addItem(CAbstractCompo原创 2013-06-07 10:48:25 · 572 阅读 · 0 评论 -
Qt C++ flyweight模式
flyweight.h#pragma once#include class CFlyweightBase{public:virtual void operate() = 0;virtual QString getText() const{return m_text;}protected:CFlyweightBase(QString text){m原创 2013-06-07 11:47:21 · 551 阅读 · 0 评论 -
Qt C++ Facade模式
facade.h#pragma once#include class CFileSystem{public:virtual void operate() = 0;};class CZipSystem : public CFileSystem{public:CZipSystem(){}void operate(){qDebug(原创 2013-06-07 14:35:00 · 571 阅读 · 0 评论 -
Qt C++ proxy模式
proxy.h#pragma once#include class CWoman{public:virtual void happyWithMan() = 0;virtual void makeEyesWithMan() = 0;};class CWangPo : public CWoman{public:CWangPo(CW原创 2013-06-07 15:06:57 · 976 阅读 · 0 评论 -
Qt C++ template模式
这个模式就是使用多态将实现延迟到子类中进行,代码很简单template.h#pragma once#include class CCar{public:virtual void operate() = 0;};class CBWMCar : public CCar{public:CBWMCar(){}void operat原创 2013-06-07 15:25:04 · 2032 阅读 · 0 评论 -
Qt C++ Observer模式(发布者-订阅者)
observer.h#pragma once#include class CObserver;class CSubjects{public:CSubjects(){}virtual ~CSubjects(){};void attatch(CObserver *obj){m_lstObserver.append(obj);}void d原创 2013-06-08 09:39:03 · 1861 阅读 · 0 评论 -
Qt C++ memento模式
还记得Undo,Redo操作吗,就是采用的是memento模式,保留一个类的内部对象,通过友元来实现。memento.h#pragma once#include #include class CMemento{private:CMemento(){};private:void set_state(int x,int y,QSt原创 2013-06-08 10:34:15 · 489 阅读 · 0 评论 -
Qt C++ State模式
我们在做多个条件判断的时候常会用到switch,如果条件和内容过于繁琐,内容庞大的话,state模式就十分有用了。state.h#pragma once#include class CState;class CContext{public:CContext(CState* state):m_state(state){}~CContext();原创 2013-06-07 16:04:51 · 692 阅读 · 0 评论 -
Qt C++ mediator模式(中介者模式)
mediator.h#pragma once#include class CMediator;class CCountry{public:virtual void setMediator(CMediator *mediator) = 0;virtual void sendMessage(const QString& message) = 0;原创 2013-06-08 15:58:54 · 892 阅读 · 0 评论 -
C/C++中extern关键字详解
C/C++中extern关键字详解1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这转载 2015-04-24 16:08:04 · 272 阅读 · 0 评论 -
Factory mode
Recently,I find a post about the Factory Mode.I like this and learn some knowledge.#include #include #include class IAnimal{public: virtual int GetNumberOfLegs() const = 0; virtual void翻译 2015-04-17 16:24:01 · 570 阅读 · 0 评论 -
Qt C++ decorate模式
decorate.h#pragma once#include class CPhone{public:virtual void showPhoneForm() = 0;};class CApplePhone : public CPhone{public:CApplePhone(){}void showPhoneForm()原创 2013-06-07 09:09:00 · 531 阅读 · 0 评论 -
Qt C++ bridge模式(桥)
Bridge模式使得抽象和实现能够相对独立。bridge.h#pragma once#include class CImplementor{public:virtual void operateImp() = 0;};class CRectImplementor : public CImplementor{public: CR原创 2013-06-06 17:44:46 · 1646 阅读 · 0 评论 -
Qt C++ command模式(类似qt的信号槽)
这个模式利用了回调函数技术。command.h#pragma once#include class CCommand{public:virtual void execute() = 0;};class CReceiver{public:void action(){qDebug() }};class原创 2013-06-08 17:43:28 · 1181 阅读 · 0 评论 -
Qt C++ interpreter模式 (解释器模式)
这个模式常用于正则表达式等interpreter.h#pragma once#include class CVariable;class CVarientContext{public:CVarientContext(){}virtual ~CVarientContext(){}virtual void addVarient(CVari原创 2013-06-09 10:25:17 · 973 阅读 · 0 评论 -
Qt C++ Iterator模式
我们常说的迭代器iterator.h#pragma once#include templateclass CAggregate{public:CAggregate(){}virtual ~CAggregate(){}virtual int getSize() = 0;virtual T getData(int index) const = 0原创 2013-06-09 14:02:36 · 826 阅读 · 0 评论 -
Qt C++ 单体模式
singleton.h#pragma once#include class CSingleTon{public:static CSingleTon* instance();static void releaseInstance();QString getName() const;QString getAge() const;原创 2013-06-05 15:46:01 · 748 阅读 · 0 评论 -
Qt C++ 工厂模式
产品类:project.h#pragma once#include class CProject{public:virtual void show() = 0;};class CProjectA : public CProject{public:CProjectA();void show(){qDebug()原创 2013-06-05 17:56:41 · 1161 阅读 · 0 评论 -
Qt C++ 策略模式
strategy.h#pragma once#include class AbstractStrategy{public:AbstractStrategy();virtual void operate() = 0;};class CCardMethod1 : public AbstractStrategy{public:CCa原创 2013-06-05 11:33:55 · 617 阅读 · 0 评论 -
Qt C++ 适配器模式
adapter.h#pragma once#include class CTarget{public:virtual void request(){qDebug() };class CAdaptee{public:CAdaptee(){};void specificalRequest(){qDebug() };clas原创 2013-06-05 15:20:21 · 669 阅读 · 0 评论 -
关于设计模式
http://blog.csdn.net/feixiaoxing/article/details/7068053转载 2013-06-14 17:23:07 · 396 阅读 · 0 评论 -
Qt C++ visitor模式
element.h#pragma once#include #include "visitor.h"class CEmployeePrivate;class CEmployee : public QObject{Q_OBJECTQ_CLASSINFO("Author","wdj")Q_ENUMS(ESex)Q_ENUMS(EGalatyTyp原创 2013-06-06 14:36:17 · 658 阅读 · 0 评论 -
Qt C++ prototype(原型模式或者克隆模式)
prototype.h#pragma once#include #include #include class CProtoTypeBase{public:virtual CProtoTypeBase* clone() = 0;virtual void printAuthor() = 0;virtual void printGroup() =原创 2013-06-06 15:17:14 · 845 阅读 · 0 评论 -
Qt C++ builder模式
builder.h#pragma once#include //产品class CCar{public:void setWheel(const QString& wheel){m_wheel = wheel;}void setbody(const QString& body){m_body = body;}void setglass(const原创 2013-06-06 16:10:34 · 1441 阅读 · 0 评论 -
visitor模式
Specialized visitor design for segregating traversal (criteria based) and operation.IntroductionSoftware applications in real life often gets into a shape where a bad Data Structure choice转载 2015-06-18 17:27:07 · 578 阅读 · 1 评论