适配器模式(Adapter)
来源:互联网 发布:tcl电视软件升级 编辑:程序博客网 时间:2024/05/24 04:34
1.目的
某个对象(People1)有一个接口(getAge()),当我们想使用它的时候发现,我们需要用到这个接口的场景(client的setage())与这个接口类似却并不相同(入参、返回值等等限制),不能直接使用,这个时候,我们不用修改目标类的实现(增加或者修改类的接口),而是我们就构造一个适配器类(Wrapper),持有这个目标对象(people1),并在这个类中,做接口的转换,将目标对象的接口转换成我们需要的接口形式。
通过Wrapper方式,就可以做到对目标对象符合开闭原则,即不用修改目标对象的代码,而实现了接口的匹配。
适配器去实现(继承)待适配的接口,适配器与真正的接口实现者有两种实现方式,一种是委托,适配器将接口委托给接口实现者去实现,另外就是适配器去继承接口实现者的接口,并在里面做出适配
2.代码
Adapter,h
#ifndef ADAPTER_H_#define ADAPTER_H_class People1{public:People1(int);int getAge();private:int age;};class Wrapper{public:Wrapper(People1&);char getAge();private:People1* people;};class Client{public:void setAge(char);char getAge();private:char age;};#endif /* ADAPTER_H_ */
Adapter.cpp
#include "Adapter.h"#include <iostream>using namespace std;People1::People1(int arg):age(arg){}int People1::getAge(){return age;}Wrapper::Wrapper(People1& arg):people(&arg){}char Wrapper::getAge(){return (char)people->getAge();}void Client::setAge(char arg){age = arg;}char Client::getAge(){return age;}void adapter(){People1 boy(11);Wrapper wrapper(boy);Client client;client.setAge(wrapper.getAge());cout<<client.getAge()<<endl;}
0 0
- 适配器模式(Adapter)
- 适配器模式(Adapter)
- 适配器(Adapter)模式
- ADAPTER(适配器)模式
- 适配器模式(adapter)
- 适配器模式(Adapter)
- Adapter(适配器)模式
- 适配器模式(Adapter)
- 适配器(Adapter)模式
- Adapter(适配器模式)
- 适配器模式(adapter)
- 适配器(Adapter)模式
- 适配器模式(Adapter)
- 适配器模式(Adapter)
- 适配器(Adapter)模式
- 适配器(Adapter)模式
- 适配器模式(Adapter)
- 适配器模式(Adapter)
- 'Icon already includes gloss effects' doesn't work on iOS 6 compiled on xCode 5 with SDK 7
- Ehcache Storage Options
- 深入理解java虚拟机笔记:高效并发
- TIM_OCMode_Timing TIM_OCMode_Toggle 含义
- Spring和Struts的区别?
- 适配器模式(Adapter)
- 大学计算机科学的14个知识领域
- 海淘时代全面来临,强龙能否压过地头蛇
- Ehcache缓存回收策略
- xcode6中自动布局autolayout和sizeclass的使用
- 关于log4j日志输出的相关问题
- 从当当网发力C2B服装定制看平台电商未来
- c++ 字符串格式 String Format 库 (替代printf)
- Java将科学计数法数据转为字符串