这两天,听到有人讨论适配器模式,讨论的是对象适配器和类适配器。他们对着Adaptee和Adapter大声讨论着,本来想发表自己的想法,结果被他们大声盖住,只能回家写出自己的想法,并且从他们的讨论中更加深入的理解了适配器是什么。
client和Adaptee之前是什么关系?多对多。一个写好的client处理程序,在后续可能会有需要新的处理对象,而这些处理对象不符合client的接口需要,那么就需要对些Adaptee进行适配,适配成满足client需要的Adapter。这是一个client对多个Adaptee的情况。也有多个client对一Adaptee的情况,因为多个client都可能需要去执行Adaptee,不同的client需要不同的接口对象,那么这个Adaptee就会被适配成不同的接口,这是多个client对一个Adaptee的情况。
首先,适配器是为client服务的,是先有client,再有Adapter,或者说,是先从client的角度看待,发现Adaptee不能满足接口的统一性,需要Adapter。而Adaptee可能在任何Adapter之前的任何时候出现都可以。client是我们的代码,而且是已经存在的代码,里面的实现方式是:
class client{
Adapter adapter;
void method(){
adapter.methodAdapter();
}
}
请注意,这个client里面持有的Adapter是指一个接口或者抽象,并不是说就是适配器。因为我们有client的时候,还不需要适配器。
在client接口一定的情况下,希望client也能去执行adaptee的methodAdaptee方法,但是client只认识adapter的methodAdapter方法,怎么办呢?这个时候,适配器隆重出场了。
class 适配器 implements Adapter{
Adaptee adaptee;
void methodAdapter(){
adaptee.methodAdaptee();
}
}
通过这个转换,我们就可以把Adaptee包裹成Adapter,然后送给client。client发现这是个Adapter,具有methodAdapter方法,从而去执行。但是由于内部实际包装了Adaptee的方法,从而达成了执行Adaptee的方法的目标。
分享到:
相关推荐
首先,手册开篇即强调了在安装和操作NIBA-01 InterBus-S适配器模块时必须遵守的安全指导。在开始任何工作之前,用户必须仔细研读本章节的内容。手册中明确区分了两类安全指示:警告(Warnings)和注意事项(Notes)...
开篇.pdf 继承、封装、多态.pdf 备忘录模式.pdf 工厂模式.pdf 模板模式.pdf 中介者模式.pdf 策略模式.pdf 观察者模式.pdf 桥接模式.pdf 装饰模式.pdf 抽象工厂模式.pdf 适配器模式.pdf 状态模式.pdf 代理...
抽象工厂模式.pdf 继承、封装、多态.pdf 适配器模式.pdf 状态模式.pdf 代理模式.pdf 建造者模式.pdf 外观模式.pdf 组合模式.pdf 单件模式.pdf 解释器模式.pdf 享元模式.pdf 迭代器模式.pdf 开篇.pdf 原型模式.pdf ...
首先,文档开篇介绍了vSphere存储的基础知识,包括传统存储虚拟化模型和软件定义的存储模型,并引入了vSphere Storage API,这是一个能够让存储厂商创建与vSphere紧密集成的存储解决方案的工具集。 接着,文档深入...
首先,文档开篇介绍了嵌入式Web服务器与PLC实时数据通信的实施方法,指出嵌入式Web服务器核心芯片为基于ARM920T内核的S3C2440微处理器芯片,并使用Linux作为操作系统。这里体现了嵌入式系统技术在工业控制领域的应用...
本书开篇即强调设计之美在于其无限的可能性和创造性。设计没有绝对的标准,正如莎士比亚笔下的“哈姆雷特”,不同的人会有不同的解读。设计同样如此,满足客户需求的设计就是最好的设计。 #### 计划的设计与演进的...
文档中出现了CGA(Color Graphics Adapter,彩色图形适配器)、EGA(Enhanced Graphics Adapter,增强型图形适配器)和VGA(Video Graphics Array,视频图形阵列),这些都是不同发展阶段的显示适配器,随着技术的...
本实验是树莓派C语言系列实验的开篇之作,详细介绍了树莓派硬件资源、安装和配置的全过程,为后续实现传感器功能的C语言编程奠定了基础。通过对树莓派的安装、配置和使用,我们能够深入了解其硬件特性和软件应用,为...
用户手册的开篇即强调了安全使用的重要性和在使用产品前需要阅读理解的安全手册和指导。特别提醒用户,在日本国内使用ThinkPad内置无线适配器时要特别注意,因为可能涉及到特定的法规要求。用户还可以在Lenovo的官方...
这份资源由热心人士精心整理,提供了丰富的学习材料,是提升汇编技能的理想之选。 卷首语.txt可能包含了本期通讯的开篇致辞或编辑寄语,它可能会概述本期的主题、重点内容或是对读者的学习建议,激发大家学习的热情...
手册开篇介绍了Zend Framework 2的基本概念和安装步骤,说明了如何设置开发环境以及怎样开始一个简单的项目。手册中提及了一些基础的假设,这暗示着读者应具备一定的PHP基础知识和开发经验。 在“Getting Started”...
"1、开篇.avi"很可能是介绍整个系列的开篇,讲解了为什么需要这两种设计模式以及它们在Android开发中的重要性。 学习和熟练运用MVC和MVP设计模式对于提升Android开发能力至关重要,它们能帮助开发者写出更清晰、更...
在《ThinkPad T430维护手册》中,安全信息占据着开篇的重要位置,强调了在进行任何硬件维护操作前必须了解并遵循的安全准则。首先,手册概述了一般安全原则,包括但不限于正确处理电子设备、避免静电放电伤害以及...
在《北京动力节点-Reyco郭-SpringMVC4.pdf》中,会涵盖SpringMVC的模型-视图-控制器架构、处理器映射器与适配器、视图解析、异常处理等知识点,帮助开发者熟练运用SpringMVC构建高效、可维护的Web应用。 再者,...
4. **JCA适配器部署**:可以将Spring应用上下文作为JCA适配器进行部署,增强了与企业级应用的集成能力。 5. **任务调度**:内置的任务调度功能,简化了定时任务的管理。 6. **Java 5支持**:全面兼容Java 5,利用了...
1. **building-common-navigator-framework-viewer-I.pdf** - 这是系列的开篇,主要介绍Common Navigator Framework的基本概念,包括它的设计目标、功能特性以及如何在Eclipse插件开发中引入这个框架。文档可能会...
其次,【chp01 c#简介.ppt】可能是课程的开篇,介绍了C#语言的基本背景、历史和发展,以及它在.NET框架中的位置。此外,还可能涉及C#的主要特点,如面向对象编程、类型系统和垃圾回收机制。 接着,【chp03 类型、...