C++设计模式实例图解
生活随笔
收集整理的這篇文章主要介紹了
C++设计模式实例图解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一 適配器模式
運行結果;
類圖;
文件;
代碼;
#include "Adaptee.h" #include <stdio.h>Adaptee::Adaptee() { }Adaptee::~Adaptee() {}void Adaptee::specificRequest() {fprintf(stderr, "this is specificRequest\n"); }#include "Adapter.h"Target::Target() {}Target::~Target() {}Adapter::Adapter():adaptee(new Adaptee()) {}Adapter::~Adapter() {}void Adapter::request() {adaptee->specificRequest(); }
#include "Adapter.h"int main() {Target* tar = new Adapter();tar->request();return 0; }
#ifndef _ADAPTEE_H_ #define _ADAPTEE_H_class Adaptee { public:Adaptee();~Adaptee();void specificRequest();};#endif
#ifndef _ADAPTER_H_#define _ADAPTER_H_#include "Adaptee.h"class Target{public:Target();virtual ~Target();virtual void request() = 0; };class Adapter: public Target { public:Adapter();~Adapter();void request();private:Adaptee* adaptee; };#endif
二 橋接模式
#include "AbstractionImplement.h" #include <stdio.h>AbstractionImplement::AbstractionImplement() {}AbstractionImplement::~AbstractionImplement() {}ConcreteAbstractionImplement1::ConcreteAbstractionImplement1() {}ConcreteAbstractionImplement1::~ConcreteAbstractionImplement1() {}void ConcreteAbstractionImplement1::operation() {fprintf(stderr, "ConcreteAbstractionImplement1\n" ); }ConcreteAbstractionImplement2::ConcreteAbstractionImplement2() {}ConcreteAbstractionImplement2::~ConcreteAbstractionImplement2() {}void ConcreteAbstractionImplement2::operation() {fprintf(stderr, "ConcreteAbstractionImplement2\n" ); }
#include "Abstraction.h"int main() {AbstractionImplement* absImp1 = new ConcreteAbstractionImplement1();Abstraction* abs1 = new DefinedAbstraction(absImp1);abs1->operation();AbstractionImplement* absImp2 = new ConcreteAbstractionImplement2();Abstraction* abs2 = new DefinedAbstraction(absImp2);abs2->operation(); return 0; }
#ifndef _ABSTRACTION_H_ #define _ABSTRACTION_H_#include "AbstractionImplement.h"class Abstraction { public:Abstraction();virtual ~Abstraction();virtual void operation() = 0;};class DefinedAbstraction: public Abstraction { public:DefinedAbstraction(AbstractionImplement* absImp);~DefinedAbstraction();void operation();private:AbstractionImplement* absImp; };#endif
#ifndef _ABSTRACTIONIMPLEMENT_H_ #define _ABSTRACTIONIMPLEMENT_H_class AbstractionImplement { public:AbstractionImplement();virtual ~AbstractionImplement();virtual void operation() = 0; };class ConcreteAbstractionImplement1:public AbstractionImplement { public:ConcreteAbstractionImplement1();~ConcreteAbstractionImplement1();void operation(); };class ConcreteAbstractionImplement2:public AbstractionImplement { public:ConcreteAbstractionImplement2();~ConcreteAbstractionImplement2();void operation(); };#endif
總結
以上是生活随笔為你收集整理的C++设计模式实例图解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kinect SDK V1.7 开发工具
- 下一篇: XNA3到4的转换