`
iamxi
  • 浏览: 191786 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

学习:适配器(Adapter)

阅读更多

如果你知道电源适配器的作用,就应该很容易理解这个模式。

 

意图:

将一个类的接口转换成客户希望的另外一个接口。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

 

别名:

包装器 Wrapper

 

结构:

类适配器

public interface Target {

	public void request();
}

public class Adaptee {

	public void specificRequest() {
		//do something
	}
}

//类适配器
public class Adapter extends Adaptee implements Target {

	@Override
	public void request() {
		super.specificRequest();
	}

}

 

对象适配器


//对象适配器
public class Adapter implements Target {

	private Adaptee adaptee = new Adaptee();
	
	@Override
	public void request() {
		adaptee.specificRequest();
	}

}
 

 

适用:
以下情况使用Adapter模式
• 你想使用一个已经存在的类,而它的接口不符合你的需求。
• 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
• (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。

 

双向适配器:

一般适配器对使用target接口的透明,无法给使用adaptee接口的使用。双向适配器可以解决这个问题,使适配器更透明。

 

相关模式:

     模式Bridge的结构与对象适配器类似,但是Bridge模式的出发点不同:Bridge目的是将接口部分和实现部分分离,从而对它们可以较为容易也相对独立的加以改变。而Adapter则意味着改变一个已有对象的接口。
     Decorator模式增强了其他对象的功能而同时又不改变它的接口。因此Decorator对应用程序的透明性比适配器要好。结果是Decorator支持递归组合,而纯粹使用适配器是不可能实现这一点的。
     模式Proxy在不改变它的接口的条件下,为另一个对象定义了一个代理。

  • 大小: 12.7 KB
  • 大小: 13.2 KB
分享到:
评论

相关推荐

    设计模式之适配器Adapter

    标题“设计模式之适配器Adapter”暗示我们将深入探讨适配器模式的核心概念和应用场景。适配器模式通常应用于以下场景: 1. 当系统中存在一个已经存在的类,其接口不符合新需求时,可以使用适配器模式来调整接口,使...

    设计模式C++学习之适配器模式(Adapter)

    适配器模式(Adapter)是软件工程中一种常用的设计模式,它允许两个不兼容的接口之间进行通信。在C++编程中,适配器模式能够帮助我们复用现有的类,或者将第三方库的接口与我们的系统接口进行对接,从而提高代码的可...

    Android 万能适配器

    通过`android_common_adapter_demo`这个项目,我们可以学习如何构建这样一个万能适配器,包括它的设计思路、核心代码实现以及如何在实际项目中应用。该项目可能包含了示例代码、测试用例和详细的文档,帮助开发者...

    适配器模式adapter,含源码下载

    适配器模式(Adapter Pattern)是一种结构型设计模式,它能将两个不兼容的...同时,博客链接(https://hnzhoujunmei.iteye.com/blog/1032986)可能提供了更深入的讲解和实例,可以帮助你进一步学习适配器模式的应用。

    适配器模式_famouss4m_适配器模式_源码

    适配器模式的核心概念包括三部分:目标(Target)、适配者(Adaptee)和适配器(Adapter)。目标是客户端期望调用的接口,适配者是需要被适配的对象,而适配器则是连接目标和适配者的桥梁,它实现了目标接口,并通过...

    开源项目——MultiChoiceAdapter(可多选的适配器)

    这些组件通常使用适配器(Adapter)来绑定数据并渲染视图。适配器是连接数据源和视图之间的桥梁,它负责将数据转化为可以显示的View。然而,标准的适配器往往只支持单选模式,即一次只能选择一个条目。当需要实现...

    Head First 设计模式 (七) 适配器模式(Adapter pattern) C++实现

    适配器模式(Adapter pattern)是软件设计模式中的一种,其主要目的是解决系统间接口不兼容的问题,使得原本无法直接协作的类或者组件能够协同工作。在“Head First 设计模式”这本书中,适配器模式被深入浅出地讲解...

    四星电子 PC Adapter CN 使用手册.zip

    通过阅读《四星电子 PC Adapter CN 使用手册》,用户不仅可以了解如何正确使用PC Adapter CN,还可以学习到关于电脑硬件接口、驱动程序安装以及设备维护等多方面的知识,提高自己在IT领域的技能水平。这份手册对于...

    listview适配器 ListViewAdapter和ViewHolder代码.rar

    通过这个例子,你可以学习如何创建自定义的ListViewAdapter,理解ViewHolder的工作原理,并将其应用于实际项目中。同时,也可以尝试扩展这个适配器,例如添加点击事件监听、支持不同类型的列表项等,以适应更复杂的...

    自定义适配器

    同时,代码中可能包含了详细的注释,这对于初学者来说是一份很好的学习资源,能够帮助他们理解自定义适配器的工作原理。 此外,优化方面可能涉及到了以下几点: - 使用异步加载图片,避免阻塞主线程。 - 使用 ...

    适配器模式代码demo

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在本文中,我们将深入...在"Adapter"文件的代码示例中,我们可以学习如何实际应用这一模式,理解其工作原理和优缺点,以便在未来开发中灵活运用。

    codelab-adapter-4_9_0-hotfix-linux.zip

    【标题】"codelab-adapter-4_9_0-hotfix-linux.zip" 提供的是一个针对Linux操作系统的Codelab适配器的热修复版本,版本号为4.9.0。这个压缩包旨在解决在Linux环境中使用Codelab时可能遇到的问题,通过更新或修复已知...

    kml-adapter鲲鹏数学库适配器

    本文将详细介绍“kml-adapter”——一个专为鲲鹏处理器优化的数学库适配器,旨在提升在鲲鹏平台上运行的数学计算性能。 首先,我们需要理解“鲲鹏”这个名字。鲲鹏是华为自主研发的高性能服务器芯片,基于ARM架构,...

    设计模式的适配器模式的例子

    3. **适配器类(Adapter)**:适配器是核心,它实现了目标接口,并通过内部持有一个适配者对象来调用适配者的方法。适配器可以是类适配器(继承目标接口和适配者类)或对象适配器(实现目标接口并持有适配者对象)。...

    Android自定义Adapter适配器

    5. 设置Adapter:最后,将自定义的Adapter传递给ListView,通过setAdapter()方法,使ListView开始使用我们自定义的适配器来展示数据。 在这个项目中,"自定义Adapter"文件很可能是实现了上述步骤的代码示例。通过...

    设计模式之--适配器模式

    2. 适配器(Adapter):适配器是核心,它实现了目标接口,并通过内部持有原始不兼容类的引用来桥接两个接口之间的鸿沟。 3. 原始类(Adaptee):这是需要被适配的类,它的接口与目标接口不兼容。 4. 客户端(Client...

    设计模式——适配器模式

    例如,如果我们有一个旧的`OldClass`需要适配,同时有一个新的`TargetInterface`需要实现,适配器类`Adapter`将直接继承`OldClass`并实现`TargetInterface`。 2. **对象适配器模式**: 对象适配器模式中,适配器类...

    RxJavaRetrofitAdapter,用于改装2的RXJava 3适配器.zip

    在`RxJavaRetrofitAdapter-master`压缩包中,包含了适配器库的源代码,你可以直接查看和学习其内部实现。这对于理解如何实现类似的适配层或自定义拦截器非常有帮助。同时,如果你发现有任何问题或者需要扩展功能,...

    Patron_adapter_patos:简化适配器

    在"Patron_adapter_patos"项目中,学习者可以通过查看源码和测试用例来理解如何在实际项目中使用适配器模式,以解决接口不兼容的问题。同时,项目也可能提供了最佳实践和设计建议,帮助开发者提高代码的可维护性和...

    MyAdapterTest.rar

    在IT行业中,`Adapter`是一种常见的设计模式,尤其在Android开发中,`MyAdapter`通常指的是自定义的...这个项目可以作为学习自定义适配器和单元测试的一个实例,帮助开发者理解如何在Android中有效地展示和操作数据。

Global site tag (gtag.js) - Google Analytics