日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++设计模式实例图解

發布時間:2025/4/14 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 "Abstraction.h"Abstraction::Abstraction() { }Abstraction::~Abstraction() {}DefinedAbstraction::DefinedAbstraction(AbstractionImplement* absImp) {this->absImp = absImp; }DefinedAbstraction::~DefinedAbstraction() { }void DefinedAbstraction::operation() {absImp->operation(); }
#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++设计模式实例图解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。