适配器模式
来源:互联网 发布:芭碧琪面膜怎么样 知乎 编辑:程序博客网 时间:2024/06/07 17:36
大家知道,输电线用的是高压电,家庭照明使用的220V低压电,那怎么办呢,大家都知道了,使用变压器,其实也可叫适配器。
适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于不兼容而不能一起工作的那些类可以一起工作。
适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于不兼容而不能一起工作的那些类可以一起工作。
适配器模式主要解决的问题:东西在你面前,却不同使用,短时间又无法改造他,于是就需要想办法适配它。在软件开发中,也就是系统的数据和行为都正确,但接口不符合,我们应该考虑到用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用某些现存的类,但是就扣又与复用环境要求不一致的情况。适配器模式主要有两类,类型适配器模式和对象适配器模式。
#include<iostream>#include<string>using namespace std;class Player//我们的目标类,所有的运动员的抽象基类{protected:string name;public:Player(string _name) :name(_name){}virtual void Attack() = 0;virtual void Defence() = 0;virtual ~Player(){}};class Forwards : public Player//可以正常使用的,不需要适配的{public:Forwards(string _name) : Player(_name){}void Attack(){cout << "前锋" << name << "进攻" << endl;}void Defence(){cout << "前锋" << name << "防守" << endl;}};class Center : public Player//可以正常使用的,不需要适配的{public:Center(string _name) : Player(_name){}void Attack(){cout << "中锋" << name << "进攻" << endl;}void Defence(){cout << "中锋" << name << "防守" << endl;}};class ForeignCenter//一个外籍的运动员,没有继承Player,因此无法使用Player的接口,但是他也有player的所有能力,需要适配{private:string name;public:ForeignCenter(string _name) :name(_name){}void Attack(){cout << "外籍中锋" << name << "进攻" << endl;}void Defence(){cout << "外籍中锋" << name << "防守" << endl;}};class Translator :public Player//这是一个适配器,让外籍运动员和本地看起来没什么两样,自然需要继承player{private:ForeignCenter *f;//需要适配的对象public:Translator(string name) :Player(name){f = new ForeignCenter(name);}void Attack(){f->Attack();//}void Defence(){f->Defence();}~Translator(){delete f;}};int main(){Player *p1 = new Center("乔丹");//不需要适配的运动员p1->Attack();p1->Defence();Player *pt = new Translator("姚明");//适配,然后就是Player了,大家都一样了pt->Attack();//pt->Defence();delete p1;delete pt;}
我们以篮球运动员为例,无论是前锋还是后卫,还是中锋,都是运动员,这个就是客户所期待的接口,也就是Adapter,现在来了一个外籍中锋Adaptee,但是他不懂本国语言,但是他必须得有运动员所需要的全部技能(也就是必须能够实现Target中的所有动作),现在来了一个翻译Adapter来给外籍的翻译。 适配器模式有哪些使用场景呢?在软件开发中,有的时候我们要使用老系统的一些东西怎么办呢?重新开发太麻烦了,那么就可以使用适配器模式,使其适配新的接口。
阅读全文
0 0
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 解决安装Scrapy时报错error: Unable to find vcvarsall.bat
- Effective STL 31 Know your sorting options
- JExcel读取Excel,完成随机数对应学号,随机选取学生姓名
- [容易] UVa OJ 725 Division 暴力枚举
- 神经网络中卷积层的堆叠
- 适配器模式
- stat函数与stat结构体
- django设置时区与语言
- C# String和StringBuilder简介
- 一文说尽C++赋值运算符重载函数(operator=)
- 自动转圈 for 循环
- LeetCode.48 Rotate Image
- 强大的日志管理工具logback的配置
- 常用的加密算法