一 适配器模式

运行结果;

类图;

文件;

代码;

#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++设计模式实例图解相关推荐

  1. Net设计模式实例系列文章总结[转]

    1 什么是设计模式 设计模式是对在软件设计过程中重复出现的问题提出了一种比较好的解决方案.正如一位专家所说:设计模式是对程序设计人员经常遇到的设计问题的可再现的解决方案(The Smalltalk C ...

  2. vlookup使用步骤_Excel Vlookup函数的使用方法及实例图解

    日常工作中,我们常常会用到WORD.Excel.PPT等相关办公软件,今天UU就为大家介绍一下其中Excel的相关用法,例如Excel Vlookup函数的使用方法及实例图解,这方面的内容也是EXCE ...

  3. Background 全属性实例图解(10种全)(一)

    Background 全属性实例图解(10种全)(一) 本文目录: 一.background属性: (1).属性描述 (2).background属性使用示例 (3).background动画属性 ( ...

  4. 网络Ghost克隆操作全程实例图解

    网络Ghost克隆操作全程实例图解 QUOTE: 网络ghost在大批量装系统时效率非常高,二三百台微机,不出意外情况的话,半天到一天的时间就可以全部做完.通常用于学校.网吧.企业的计算机网络中客户机 ...

  5. 实例图解设计模式之面向对象设计七大原则

    文章目录 面向对象设计原则详解 面向对象设计原则概述 常用的面向对象设计原则 单一职责原则(Single Responsibility Principe)SRP ★★★★☆ 开闭原则(Open-Clo ...

  6. 图解java多线程设计模式 pdf_图解Java设计模式之状态模式

    图解Java设计模式之状态模式 APP抽象活动问题 状态模式基本介绍 状态模式的原理类图 状态模式解决APP抽奖问题 状态模式的注意事项和细节 APP抽象活动问题 请编写程序完成APP抽象活动,具体要 ...

  7. java类多例_Java多例设计模式实例详解

    本文实例讲述了Java多例设计模式.分享给大家供大家参考,具体如下: 一.多例设计模式定义 多例设计模式就是存在多个对象实例,供外部应用裯用,比喻数据库连接池. 二.多例模式静态类图 三.多例模式代码 ...

  8. Net设计模式实例之单例模式( Singleton Pattern)

    一.单例模式简介(Brief Introduction) 单例模式(Singleton Pattern),保证一个类只有一个实例,并提供一个访问它的全局访问点.单例模式因为Singleton封装它的唯 ...

  9. java责任链设计模式 订单_Java责任链设计模式实例分析

    本文实例讲述了Java责任链设计模式.分享给大家供大家参考,具体如下: 一 代码 abstract class AbstractHandler { private Handler Handler = ...

最新文章

  1. iOS下JS与OC互相调用(一)--UIWebView 拦截URL
  2. 【WPF】动态设置Binding的ConverterParameter转换器参数
  3. IDEA代码格式化快捷键(新)
  4. LintCode 1.A+B的问题
  5. python数据整理代码_熬夜整理的资料:分享Python数据可视化图表代码和案例给大家...
  6. 【Spring框架家族】Spring--Security权限控制密码加密
  7. LinuxWorld 2007:Linux从狂热走向理性
  8. 知乎高赞回答:是否有必要系统学习概率图模型?
  9. Briefly unavailable for scheduled maintenance message after doing automatic upgrade
  10. Android开发学习—— Broadcast广播接收者
  11. php倒计时关闭订单,订单倒计时取消,nodejs 辅助实现倒计时任务
  12. linux 大型c程序,c – 如何以编程方式在大型Linux应用程序中“拉网线”?
  13. win7如何设置通电自动开机_WIN7自动开机怎么设置?
  14. 如何禁止搜索引擎收录WordPress站点某个分类的文章?
  15. 某星级酒店警卫队定岗定编项目纪实 ——完善定岗定编,转向人性化管理
  16. 光伏箱变测控装置的工作原理
  17. DHCP Relay的介绍
  18. 服务器硬盘灯不亮 阵列是正常的,服务器磁盘阵列出现故障有哪些解决办法?...
  19. 找出10000以内的自然数中的所有完数,并统计找到的完数个数。所谓完数个数,指它恰好等于除它本身之外的因子之和
  20. matlab中feval与eval的区别

热门文章

  1. python圆的周长和面积返回2个值的元组_初见Python2:列表和元组
  2. Spring Boot的第一个入门程序 HelloWorld
  3. 计算机组成原理—— 寻址方式
  4. [学习笔记]matlab
  5. MRCTF2020]你传你码呢
  6. 【解决方案】VS2017读取文件中文乱码,其他软件打开却没事
  7. 信号处理之DFT、IDFT
  8. 卷积、相关(matlab)
  9. 第二十一讲 特征值和特征向量
  10. 用ASP.NET Web API技术开发HTTP接口(一)