`
guming123416
  • 浏览: 18741 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

适配器(Adpater Pattern)模式

阅读更多

 

一、定义:

Adapter Pattern,把一个类的接口变换成客户端所期待的另一种接口,从而使原本因为接口不匹配而无法在一起工作的两个类能够在一起工作。

二、适配器模式的两种方式:

类的适配器模式和对象适配器模式。

三、类的适配器模式:

1、静态结构图:如图1所示

 

 

1:类的适配器模式静态结构图

1、模式涉及的角色:

a) 目标(Target)角色:这个就是类所期待的接口。

b) 源角色(Adpatee):现有适配的接口

c) 适配器(adpatee)角色:适配器类是本模式的核心,适配器类将源接口转换成目标接口,显然这一角色不可以是接口,必须是具体的类。

3、类适配器模式的语法定义:

a) 代码清单1Target的源代码

 

 

package cn.javaworker.yeming.pattern;
public interface Target {
	/**
	 * 这个是源类也有的方法
	 */
	void sampleOperation1();
	/**
	 * 这个是目标类具有的方法
	 */
	void sampleOperation2();
}

  b) Adaptee源代码

 

 

 

	package cn.javaworker.yeming.pattern;
	public class Adpatee {
		/**
		 * 源类里有一个sampleOperation1()方法
		 */
		void sampleOperation1() {};
	}

 c) 适配器角色Adapter的源代码

 

 

	package cn.javaworker.yeming.pattern;
	public class Adapter extends Adaptee implements Target {
		/**
		 * 由于源方法没有sampleOperation2,因此在适配器补充这个方法
		 */
		@Override
		public void sampleOperation2() {}
	}
 

四、类的适配器模式:

1、与类的适配器一样,对象的适配器模式把被适配的类的API转换成目标类的API,不同,对象的适配器不是使用集成,而是使用委派关系连接到Adaptee类。

如图2:对象适配器模式的静态结构图:


2:对象适配器模式的静态结构图

2、从上图可以看出,模式所涉及的角色:

Ø 目标(Target)角色:这个就是系统所期待的接口

Ø (Adaptee)角色:现在需要适配器的接口

Ø 适配器(Adapter)角色:适配器类是本模式的核心,适配器时将源接口转换成目标接口。

3、模式的示例源代码:

a) Target类的源代码

	package cn.javaworker.yeming.pattern;
	public interface Target {
		/**
		 * 这个是源类也有的方法
		 */
		void sampleOperation1();
		/**
		 * 这个是目标类具有的方法
		 */
		void sampleOperation2();
	}
 b) Adaptee源代码

  package cn.javaworker.yeming.pattern;

	public class Adpatee {
		/**
		 * 源类里有一个sampleOperation1()方法
		 */
		public  void sampleOperation1() {};
	}

 c) Adapter源代码

	package cn.javaworker.yeming.pattern.duxiag;
	public class Adapter implements Target{
		private Adaptee adaptee;
		public Adapter(Adaptee adaptee) {
			this.adaptee = adaptee;
		}
		/**
		 * 源类中有有方法sampleOperation1(),
		 * 因此适配器直接委派即可
		 */
		@Override
		public void sampleOperation1() {
			adaptee.sampleOperation1();
		}
		/**
		 * 源类中没有这个方法sampleOperation2();
		 * 因此没有适配器类需要补充此方法
		 */
		@Override
		public void sampleOperation2() {}
	}
 

 

  • 描述: 类适配器模式静态结构图
  • 大小: 17.6 KB
  • 大小: 22.1 KB
分享到:
评论

相关推荐

    8.设计模式-适配器模式1

    在 `AdapterTest2` 中的 `Adpater` 类就是类适配器的例子,它继承了 `Adaptee` 并实现了 `Target` 接口,同样完成了电压转换的功能。 适配器模式有以下几个主要优点: 1. **单一职责原则**:适配器类只负责接口的...

    安卓万能适配器Adapter

    4. **性能优化**:考虑到性能问题,万能适配器可能包含了缓存机制,避免频繁的视图创建和销毁,如ViewHolder模式的运用,减少 findViewById() 的调用,提高滚动流畅性。 5. **事件监听**:适配器可能会提供简便的...

    通用RecyclerView适配器

    首先,我们要理解RecyclerView的核心作用:它是一个可以显示可滚动列表的视图,通过ViewHolder模式提高了性能。ViewHolder缓存了视图的引用,避免了频繁地查找子视图,从而减少了内存分配和提高滚动流畅性。 通用...

    适配器Adapter使用示例

    在Android开发中,适配器(Adapter)是一个关键的组件,它主要用于将数据源与UI控件进行绑定,尤其在ListView、GridView等可滚动视图中。本示例主要讲解如何自定义Adapter以及如何利用Handler实现Adapter与Activity...

    ioBroker.energymanager:ioBroker适配器,用于控制kiwigrid供电的设备

    安装adpater 从您的能量对象中获取价值。[x]对象。 要求 E.ON Aura能量探测器,Solarwatt MyReserve能量探测器或其他由奇维格里德供电的设备 变更日志 1.3.0 适应新的js-controller 1.2.3 新的适配器测试和安全...

    ring-adapter:Mozilla WebThings网关的Ring.com适配器

    适配器使用可在adpater配置页面中设置的可配置轮询间隔来轮询ring api的活动。 10秒的静态轮询还用于检测和更新由铃声应用程序/其他来源触发的设备更改。 适配器将检测与您的环形帐户关联的所有环形设备,并且可以...

    AW-GH381 adpater card i7.pdf

    - **OSC select (0-2):** 指示可以选择不同的振荡器模式,用于时钟信号的生成。 - **存储接口:** - **2SD_D0-2SD_D3, 2SD_CMD, 2SD_CLK:** 这些信号线表明存在一个或多个双通道SDIO接口,用于与SD卡或其他存储...

    wifi_laboratory:测试WiFi适配器并了解802.11协议的骨架

    驱动程序必须支持完整的监控模式和完整的数据包注入 潜水员不得依赖NETLINK tshark或Wireshark监视界面 tcpdump创建BPF代码 必须通过引导选项禁用Raspberry Pi板载WiFi芯片:dtoverlay = pi3-disable-wifi 一般工作...

    ioBroker.pi-hole:ioBroker smarthome中用于控制piKong的适配器

    安装adpater 填写adapter-admin的字段。 可以从pi-hole设备的管理Web界面(设置/ API /获取令牌)获得pi-hole设备的ip地址,API令牌,并强制间隔来更新pi-hole设备的值。 pi漏洞(iobroker中的最新统计信息) 有些...

    安卓Android源码——重写listview实现下拉刷新.zip

    实现下拉刷新的核心在于自定义一个ListView的Header视图,并结合适配器(Adpater)进行数据加载。这里的关键知识点包括: 1. **自定义View**: 需要创建一个新的布局文件,包含一个可动画化的指示器(如旋转的菊花或...

    adapter,array学习,初学者适用,简单的外语词汇app

    适配器的实现通常包括以下步骤: 1. 创建自定义Adapter类:继承自BaseAdapter或已有的Adapter,如ArrayAdapter。 2. 实现必要的方法,如`getCount()`(返回数组长度),`getItem(int position)`(返回指定位置的...

    keyv-postgres:用于Keyv的PostgreSQL存储适配器

    用于Keyv的PostgreSQL存储适配器 用于PostgreSQL存储适配器。 需要Postgres 9.5或更高版本才能提供ON CONFLICT支持,以允许表演者进行upsert。 安装 npm install --save keyv @keyv/postgres 用法 const Keyv = ...

    spixels:Spixels-带库的16-SPI LED Raspberry Pi适配器(SPI-像素)

    这提供了一个Raspberry Pi适配器,可连接多达16个SPI类型的LED灯条(例如APA102 , WS2801 , LPD6803 ),这些灯条由Raspberry Pi并行供电,以实现快速更新。 可以在和找到C ++库,在您猜中的目录中有。 如果要...

    通用的adapter

    Adapter是Android中的一种适配器模式,它允许将不同的数据源(如ArrayList、Array、数据库查询结果等)绑定到UI组件上,以便于显示数据。例如,ListView需要一个ListView.Adapter来将数据项转换为ListView的列表项,...

    基于Android的HTTP下载器程序

    在Android平台上,开发一个基于HTTP的下载器程序是一项常见的任务,尤其对于移动应用开发者来说,它可以帮助用户获取网络上的各种资源,如文档、图片、音频和视频文件等。... ... ...通过建立与服务器的连接,发送GET或POST...

    android common adapter

    总结起来,"android common adapter"是一种优化过的、适用于多种场景的Android适配器解决方案,结合`ViewHolder`模式,提高了列表滚动性能,并降低了适配器的编写复杂度。开发者可以基于`CommonAdapter`轻松实现自己...

    symfony-async-kernel:[不建议使用] Symfony Async Kernel adpater

    `symfony-async-kernel`是一个特定于Symfony的适配器,旨在引入异步处理到应用程序的核心——内核(kernel)。内核是任何Symfony应用的基石,负责调度请求、加载配置、初始化服务容器等关键任务。传统的Symfony内核是...

    Adapter应用

    Adapter是Android开发中的一种核心设计模式,主要用于在UI组件(如ListView、GridView)与数据源之间建立桥梁,使得数据能够适配并展示在视图上。在本例中,我们主要讨论了Adapter的应用,特别是ArrayAdapter的使用...

    ioBroker.stiebel-isg:读取和控制stiebel-eltrontecalor Internet服务网关(ISG)的值和命令

    ioBroker.stiebel-isg ================= 该适配器可用于从stiebel-eltron / tecalor Internet服务网关(ISG)读取值并控制设备。 自行承担使用风险!!! 绝对不为损坏提供保修,等等!!! 欢迎提供帮助或提示。...

Global site tag (gtag.js) - Google Analytics