C++设计模式-适配器模式
目录
基本概念
代码与实例
基本概念
适配器(Adapter)模式:将一个类的接口转换为客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
当系统的数据和行为都正常,但接口不负荷时,可以考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用的环境要求不一致的情况。
什么时候使用适配器模式:
1. 使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不同时使用。
2. 客户代码要求统一调用同一接口。
3. 双方都不太容易修改的时候再使用适配器模式;
本人在此总结下,这个就像套子一样,比如在某个结构里面,有了很多设计模式和功能,但我这个系统,又可以作为另外一个大系统的小功能,而那个大系统又有某种规范,此时给自己的系统带一个套子,使得他能顺利的进入那个大系统,按F进入坦克。哈哈哈!
代码与实例
结构如下所示(此图来源于大话设计模式):
程序运行截图如下:
源码如下:
Head.h
#ifndef HEAD_H
#define HEAD_H//客户期待的接口,目标可以是具体的或者抽象的类,也可以是接口
class Target{public:virtual void request();virtual ~Target();
};//需要适配的类
class Adaptee{public:void specificRequest();
};//通过内部包装一个Adaptee对象,把源接口转换为目标接口
class Adapter : public Target{public:void request();~Adapter();Adapter();private:Adaptee *adaptee;
};#endif HEAD_H
Head.cpp
#include "Head.h"
#include <iostream>
#include <string>
using namespace std;void Target::request()
{cout << "普通请求!" << endl;
} Target::~Target()
{cout << "Target::~Target() called!" << endl;
}void Adaptee::specificRequest()
{cout << "特殊请求!" << endl;
}void Adapter::request()
{adaptee->specificRequest();
}Adapter::~Adapter()
{cout << "Adapter::~Adapter() called!" << endl;
}Adapter::Adapter()
{//建立一个私有的Adaptee对象adaptee = new Adaptee;
}
Main.cpp
#include "Head.h"
#include <iostream>
#include <string>
using namespace std;int main(int *argc, int *argv[]){Target *target = new Adapter;target->request();delete target;getchar();return 0;
}
C++设计模式-适配器模式相关推荐
- Python设计模式-适配器模式
Python设计模式-适配器模式 基于Python3.5.2,代码如下 #coding:utf-8class ACpnStaff:name = ""id = "" ...
- Java | 设计模式-适配器模式
继代理模式后又来到适配器模式啦,想看之前的也有哦.持续更新中哦.让我们一起加油吧兄弟们,干他. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 你好,如果喜欢,请一起坚持!! ...
- java设计模式适配器模式_Java中的适配器设计模式
java设计模式适配器模式 适配器设计模式是一种结构设计模式 ,可以帮助我们连接到通过不同接口公开相似功能的旧版或第三方代码. 适配器的现实世界是我们用来将USB电缆连接到以太网端口的类比. 在设计一 ...
- 设计模式适配器模式_适配器设计模式示例
设计模式适配器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要 ...
- 设计模式适配器模式_21世纪的设计模式:适配器模式
设计模式适配器模式 这是我的演讲的第三部分," 21世纪的设计模式" . 适配器模式桥接世界. 在一个世界中,我们有一个概念的界面. 在另一个世界,我们有不同的界面. 这两个接口有 ...
- java设计模式适配器模式_Java解释器设计模式
java设计模式适配器模式 Interpreter design pattern is one of the behavioral design pattern. Interpreter patter ...
- Java代码审计-设计模式-适配器模式
Java设计模式-适配器模式(Adapter Pattern) 目录 什么是适配器模式 适配器模式的3种类型 JavaSE适配器模式的应用 Struts2适配器模式的应用 适配器模式是一种" ...
- 【设计模式】Java设计模式 - 适配器模式
[设计模式]Java设计模式 - 适配器模式
- C++设计模式——适配器模式(adapter pattern)
一.原理讲解 适配器模式别名为包装器(wrapper),分为类适配器(通过多继承实现).对象适配器(组合方式实现),由于类适配器比较少用,本文主要讲解用的比较多的对象适配器. 1.1意图 将一个类的接 ...
- [Head First设计模式]身边的设计模式——适配器模式
系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...
最新文章
- RDKit | 从ChEMBL数据库提取大分子HELM单体(XML转换为DataFrame并搜索部分结构)
- iptables为什么需要增加loopback回环的规则
- DFT-软件篇 from 陈新武
- windows mobile 5.0 PocketPC模拟器上网的设置 【正确】
- linux 常见服务端口
- Java线程状态分析
- 《数据结构上机实验(C语言实现)》笔记(1 / 12):绪论
- 男人要懂得赞美女人,女人要懂得鼓励男人
- 小程序——添加动画,让图标原地旋转
- 同一局域网入侵_局域网IP地址冲突、环路?千兆接入交换机选型很重要
- Spring AOP报错Set ‘exposeProxy‘ property on Advised to ‘true‘ to make it available问题
- 傅里叶变换的通俗理解
- FTP客户端--实现FTP文件的上传下载功能
- 你可以把Linux内核当成一家软件外包公司的老板
- 遗传算法关于多目标优化python(详解)
- Nginx--Rewrite重写
- pyqt5以及pyqtgraph(pyqt界面设计绘图)
- 快乐二级域名分发程序-美化版源码
- python爬虫有什么好处_python为什么叫爬虫 python有什么优势
- 五霸七雄 细数ERP春秋(转)