博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式(6) - Adapter适配器模式
阅读量:4071 次
发布时间:2019-05-25

本文共 1024 字,大约阅读时间需要 3 分钟。

目录


1.意图

  主要思想是将类的接口转换为客户端所期望的接口。Adapter模式将那些因为接口不同而无法协作的类聚集起来,一起工作。Adapter模式的意图就是,如果可以对接口进行修改,则可以重用已存在的软件。

2.UML类图

  类模式。通过多重继承来实现。通过public获得了接口的继承,通过private获得了实现的继承。

  STL中的stack,就是从vector适配而来的。当stack执行push()操作时,底层的vector执行的是vector::push_back()。

3.代码实现

#include
//所需要的接口(目的接口)class Charger {public: virtual void charge() = 0;};//Legacy charger(Adaptee)class LegacyCharger {public: LegacyCharger(unsigned int mint):minutes(mint){ } void oldCharge() { std::cout<<"LegacyCharger: oldCharge()"<
charge(); delete cg;}

  运行结果为:

  ChargerAdapter Constructor
  ChargerAdapter: charge()
  LegacyCharger: oldCharge()
 
  基于运行结果,可以得到下面的分析:
  client认为自己所访问的对象就是Charger.
  ChargerAdapter通过多重继承,实现了让LegacyCharger来实现自己的方法charge(). 但是,LegacyCharger中并没有相同的charger()方法。

4.总结

适配器将一个类的接口,转换为另外的,但是可以兼容的接口。这个方式与proxy代理模式有些类似。但是,其中adapter类的接口与原始类的接口可能是不同的。

通过上面的例子可以看出,适配器模式用于对一个已经存在的API,暴露出一个不同的接口,使得它可以与其它的代码工作。另外,使用适配器模式,可以将各种混杂的接口,进行转换,使得它们可以提供一致的API。

桥接模式与adapter对象有着相似的结构,但是桥接模式的用途不同:它将自己的实现与接口分离,这样实现可以进行不同的变化,相互独立。而适配器意味着改变一个已存在对象的接口。

你可能感兴趣的文章
FTP的命令
查看>>
CentOS操作系统下安装yum的方法
查看>>
ping 报name or service not known
查看>>
FTP 常见问题
查看>>
zookeeper单机集群安装
查看>>
do_generic_file_read()函数
查看>>
Python学习笔记之数据类型
查看>>
Python学习笔记之特点
查看>>
Python学习笔记之安装
查看>>
shell 快捷键
查看>>
VIM滚屏操作
查看>>
EMC 2014存储布局及十大新技术要点
查看>>
linux内核内存管理(zone_dma zone_normal zone_highmem)
查看>>
将file文件内容转成字符串
查看>>
循环队列---数据结构和算法
查看>>
优先级队列-数据结构和算法
查看>>
链接点--数据结构和算法
查看>>
servlet中请求转发(forword)与重定向(sendredirect)的区别
查看>>
Spring4的IoC和DI的区别
查看>>
springcloud 的eureka服务注册demo
查看>>