适配器模式(adapter)c++版本
来源:互联网 发布:python求平均值函数 编辑:程序博客网 时间:2024/06/11 02:18
大话设计模式中的适配器模式(adapter)c++版本
/* * adapter.cpp * * Created on: Sep 28, 2017 * Author: clh01s@163.com * 适配器模式将一个类的接口转换成客户希望的另外一个接口 */#include <iostream>#include <string>using namespace std;//基类class Player{public: Player(string name){_name = name;} virtual ~Player(){}; virtual void Attack() = 0; virtual void Definse() = 0;protected: string _name;};//继承基类实现其虚函数class Forwards:public Player{public: Forwards(string name):Player(name) { } void Attack() override { cout<<_name<<"前锋进攻"<<endl; } void Definse() override { cout<<_name<<"前锋防守"<<endl; }};//继承基类实现其虚函数class Center:public Player{public: Center(string name):Player(name) { } void Attack() override { cout<<_name<<"中锋进攻"<<endl; } void Definse() override { cout<<_name<<"中锋防守"<<endl; }};//继承基类实现其虚函数class Guards:public Player{public: Guards(string name):Player(name) { } void Attack() override { cout<<_name<<"后卫进攻"<<endl; } void Definse() override { cout<<_name<<"后卫防守"<<endl; }};//外籍中锋模拟接口不同的类class ForeignCenter{public: string get_name(){return _name;} void set_name(string name){_name = name;} void Attack(){cout<<_name<<"外籍中锋进攻"<<endl;} void Definse(){cout<<_name<<"外籍中锋防守"<<endl;}private: string _name;};//适配器类继承基类,通过在内部声明一个外籍中锋的实例来操作外籍中锋的动作(模拟翻译的效果)class Translator:public Player{public: Translator(string name):Player(name) { wjzf->set_name(name); } void Attack() override { wjzf->Attack(); } void Definse() override { wjzf->Definse(); }private: //外籍中锋实例 ForeignCenter *wjzf = new ForeignCenter();};int main(){ Player* b = new Forwards("巴蒂尔"); b->Attack(); Player* m = new Guards("麦克格雷迪"); m->Definse(); //声明适配器类通过适配器类调用外籍球员的操作 Player* ym = new Translator("姚明"); ym->Attack(); ym->Definse(); return 0;}
运行结果clh@clh:~/testcode/设计模式$ ./a.out 巴蒂尔前锋进攻麦克格雷迪后卫防守姚明外籍中锋进攻姚明外籍中锋防守
适配器模式的使用情景(摘抄于《设计模式》):
1.你想使用一个已经存在的类,而它的接口不符合你的需求。
2.你想创建一个可以复用的类,该雷可以与其它不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作
3.(仅适用于对象Adapter)你想使用一个已经存在的类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
转载请注明源地址:http://blog.csdn.net/clh01s
阅读全文
0 0
- 适配器模式(adapter)c++版本
- 适配器模式(Adapter)(C#)
- Adapter模式 适配器模式
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
- 适配器模式(Adapter)
- 适配器模式(Adapter)
- 适配器(Adapter)模式
- 适配器模式(Adapter Pattern)
- ADAPTER(适配器)模式
- 适配器模式(adapter)
- Adapter适配器模式
- 适配器(Adapter)模式
- 适配器模式(Adapter Pattern)
- Adapter(适配器)模式
- 适配器模式(adapter)
- 适配器模式(Adapter)
- 适配器模式(Adapter)
- 适配器模式(Adapter)
- eclipse新建tomcat server但是总是报404的解决方法
- tomcat设置IP地址或者域名访问
- 希尔排序 Python实现
- 闲话云安全(1)_安全参考模型
- Java开发中的23种设计模式详解
- 适配器模式(adapter)c++版本
- kamon文档翻译(四)--trace订阅协议
- UESTC-1057 秋实大哥与花 (区间修改,区间求和)
- JMS基本概念
- PYTHON3.6对中文文本分词、去停用词以及词频统计
- 关闭防火墙后javaweb项目无法访问
- Tomcat中Java垃圾收集调优
- laravel中实现短信发送验证码
- 开通博客随笔