适配器模式(Adapt)-设计模式(六)
来源:互联网 发布:js改变当前url 不跳转 编辑:程序博客网 时间:2024/06/07 01:22
作用:
将一个类的接口转换成客户希望的另外一个接口。 Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
解析:
Adapt 模式其实就是把完成同样的一个功能但是接口不能兼容的类桥接在一起使之可以在一起工作,这个模式使得复用旧的接口成为可能.
实现:
Adapt 模式有两种实现办法,一种是采用继承原有接口类的方法,一种是采用组合原有接口类的方法
接下来看一下实现吧;
1、采用继承原有接口类的方法:
#include<iostream>using namespace std;//需要被Adapt的类class Target{ public: Target(){} virtual ~Target(){} virtual void Request() { cout<<"Target::Request"<<endl; }};//与被Adapt对象提供不兼容接口的类class Adaptee{ public: Adaptee(){} ~Adaptee(){} void SpecificRequest() { cout<<"Adaptee::SpecificRequest"<<endl; }};//进行Adapt的类,采用继承原有接口类的方式class Adapter:public Target,private Adaptee{ public: Adapter(){} ~Adapter(){} void Request() { this->SpecificRequest(); }};int main(){ Target* adt = new Adapter(); adt->Request(); return 0;}
2、采用组合原有接口类方法
#include<iostream>using namespace std;//需要被Adapt的类class Target{ public: Target(){} virtual ~Target(){} virtual void Request() { cout<<"Target::Request"<<endl; }};//与被Adapt对象提供不兼容接口的类class Adaptee{ public: Adaptee(){} ~Adaptee(){} void SpecificRequest() { cout<<"Adaptee::SpecificRequest"<<endl; }};//进行Adapt的类,采用聚合原有接口类的方式class Adapter:public Target{ public: Adapter(Adaptee* ade) { this->_ade = ade; } ~Adapter(){} void Request() { _ade->SpecificRequest(); } private: Adaptee* _ade;};int main(){ Adaptee *ade = new Adaptee(); Target* adt = new Adapter(ade); adt->Request(); return 0;}
0 0
- 适配器模式(Adapt)-设计模式(六)
- 适配器模式(Adapt Pattern)
- 设计模式之(六)------适配器模式
- java设计模式(六)--适配器模式
- Java设计模式(六)----适配器模式
- 设计模式(六)适配器模式
- 设计模式(六):适配器模式
- 设计模式--Adapt模式
- 设计模式笔记(六)--适配器模式、外观模式
- 常见设计模式解析和实现(C++)Adapt模式
- 常见设计模式解析和实现(C++)Adapt模式
- 设计模式之 adapt
- 设计模式之(六)--适配器模式(adapter)
- 设计模式(六)适配器模式(Adapter)-结构型
- 设计模式(六) 适配器模式(Adapter)
- 浅谈Java设计模式(六)适配器模式(Adapter)
- 设计模式(六)之Adapter - 适配器模式
- 设计模式之六 适配器模式(Adapter)
- org-json和net-sf-json的区别
- Redis内存淘汰机制
- 如何使用SQLite3操作数据库
- web安全 点击劫持 ClickJacking
- iOS App集成Apple Pay教程(附示例代码)
- 适配器模式(Adapt)-设计模式(六)
- 使用 jquery 实现 checkbox “全选/全不选” 效果
- 常用需求系列——4舍6入5成双
- SIP基本呼叫流程
- xpath语法详解
- win7 64位安装maven后提示mvn 不是内部或外部命令
- 图片轮播
- leetcode-3. Longest Substring Without Repeating Characters
- 5.2.3 十字链表