适配器模式
来源:互联网 发布:淘宝开店要注册公司吗 编辑:程序博客网 时间:2024/09/21 06:18
简介
适配器模式:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
构成
适配器(Adapter)模式结构包括的角色有目标(Target)角色、源(Adaptee)角色和适配器(Adapter)角色。
目标(Target)角色:这就是所期待的接口,定义了客户所期望的操作。目标(Target)角色可以是具体类或抽象类。该角色不可缺少。
源(Adaptee)角色:这是我们原有的产品,也是需要被适配的产品。这是我们原有的产品,也是需要被适配的产品:源(Adaptee)角色可以用接口、抽象类和具体类来实现。该角色不可缺少。
适配器(Adapter)角色:适配器角色是本模式的核心。Adapter对Adaptee接口与Target接口进行适配,适配器把源接口转换成目标接口,在Target目标角色与Adaptee源角色之间提供一种过渡,即把Adaptee源角色所提供的接口转换为Target目标角色所提供的接口。适配器(Adapter)角色必须是具体类。该角色不可缺少。
常用的场景
使用第三方库的时候,第三方的库肯定不能适用所有的系统,所以需要一个适配器来转换。
优点
1.屏蔽了具体的实现方式,实现了依赖倒转。
2.可以把不统一的接口封装起来,使之成为统一的接口。
3.把本来不方便适用的接口转换成统一的接口。
测试代码
#include <iostream>#include <assert.h>#include <vector>using namespace std;//目标类class FBaseBook{public: void readA(){}; void readB(){};};//正常类class FChineBook : public FBaseBook{public: void readA(){}; void readB(){};};class FForigenBook{public: void readA1(){}; void readB1(){};};//翻译 class FAdapteeBook : public FBaseBook{public: void readA() { m_oFBook->readA1(); }; void readB() { m_oFBook->readB1(); }; void setBook(FForigenBook* book) { m_oFBook = book; }private: FForigenBook* m_oFBook;};void main(){ FForigenBook m_oBook; FAdapteeBook m_oBook1; m_oBook1.setBook(&m_oBook); m_oBook1.readA(); m_oBook1.readB();}
阅读全文
0 0
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- android studio中,拉下分支,修改包名和相关信息之后,工程类名标红,不报错,也可以编译运行,怎么回事?
- ViewPager+Fragment使用FragmentPageAdapter时app与v4下FragmentManager冲突的解决
- Spring依赖注入(DI)详解
- Java第六章:动物声音“模拟器”(接口)
- 【银行】2014年中信银行IT类笔试回忆版
- 适配器模式
- Mybatis学习总结(二
- golang第一个功能实现(判断字段相等就合并指定字段到一个表格中)
- Nexus3的功能介绍-简单版
- vue新建项目(二)vue-cli项目结构
- 软件开发环境-开发环境、测试环境、生产环境的区别
- [Codeforces 894E] Ralph and Mushrooms
- html5 pattern属性的使用
- redis实现访问限制