(九)适配器模式
2014-03-31 20:37
176 查看
适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不同不兼容而不能一起工作的那些类可以一起工作
代码:
#include <iostream> #include <string> using namespace std; class player { public: player( string name ) : player_name( name ) {} virtual void attack() {} virtual void defense() {} protected: string player_name; }; class forward : public player { public: forward( string name ) : player( name ) {} void attack() { cout << player_name << "进攻" << endl; } void defense() { cout << player_name << "防守" << endl; } }; class center : public player { public: center( string name ) : player( name ) {} void attack() { cout << player_name << "进攻" << endl; } void defense() { cout << player_name << "防守" << endl; } }; class yaoming { public: yaoming( string name ) : yaoming_name( name ) {} void attack() { cout << "不会英语的" << yaoming_name << "进攻" << endl; } void defense() { cout << "不会英语的" << yaoming_name << "防守" << endl; } private: string yaoming_name; }; class translator : public player { public: translator( string translator_name, string player_name ) : player( translator_name ) { y = new yaoming( player_name ); } void attack() { cout << "翻译者" << player_name << "告诉"; y->attack(); } void defense() { cout << "翻译者" << player_name << "告诉"; y->defense(); } private: yaoming *y; }; int main() { player *a = new forward( "巴蒂尔" ); player *b = new center( "麦克格雷迪" ); player *y = new translator( "一号", "姚明" ); a->attack(); b->defense(); y->attack(); y->defense(); }
如上,当我们在进行程序开发的时候,发现之前写过的一个类的功能可以用在当下的开发环境中,可是接口又不符合,这个时候就可以考虑适配器模式了,不过觉得如果之前的类封装的好的话应该不需要改接口,或者说只是改小小一部分,所以封装的时候还是多考虑一下代码的健壮性吧!
相关文章推荐
- Latest node.js & npm installation on Ubuntu 12.04
- ios-Frame和bounds的区别
- OpenGL环境配置(VS2012)
- Java性能优化系列之四--Java内存管理与垃圾回收机制详解
- WideCharToMultiByte
- opencv中计算程序运行时间
- 8051 Code Banking
- 编程之美 求二叉树中节点的最大距离 非递归
- 第28天
- “完成”的定义和测试的职责
- MATLAB中contour函数用法
- poj3308 Paratroopers 二分图的最小割
- 吐槽 intent:#Intent;S.K_1171477665=;end
- C# 静态类、静态构造器、静态方法、静态字段
- C程序-进程内存结构分析
- [学习笔记]小型java游戏引擎_1
- PHP随笔(继承)
- cannot find -lbz2
- Eclipse常用快捷键
- 取石子(一)