`
Flyingh
  • 浏览: 18313 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Adapter

 
阅读更多

Adapter Pattern:将一个类的接口,转换成客户所期望的另一个接口。

1).

Target.java

 

package com.flyingh.target;

public interface Target {
	void request();
}

 

 Adaptee.java

 

package com.flyingh.adaptee;

public class Adaptee {

	public void specificRequest() {
		// TODO Auto-generated method stub
		System.out.println("specific request!");
	}

}

 

Adapter.java

 package com.flyingh.adapter;

import com.flyingh.adaptee.Adaptee;
import com.flyingh.target.Target;

public class Adapter implements Target {
	private Adaptee adaptee;

	public Adapter(Adaptee adaptee) {
		super();
		this.adaptee = adaptee;
	}

	@Override
	public void request() {
		// TODO Auto-generated method stub
		adaptee.specificRequest();
	}

}

 Client.java

 

package com.flyingh.client;

import com.flyingh.adaptee.Adaptee;
import com.flyingh.adapter.Adapter;
import com.flyingh.target.Target;

public class Client {
	public static void main(String[] args) {
		Adaptee adaptee = new Adaptee();
		Target adapter = new Adapter(adaptee);
		adapter.request();
	}
}

 

 程序运行结果如下:

 

specific request!

 

2).将Iterator适配成Enumeration,并用Set测试:

IteratorAdapter.java

 

package com.flyingh.adapter;

import java.util.Enumeration;
import java.util.Iterator;

public class IteratorAdapter<E> implements Enumeration<E> {
	private Iterator<E> iterator;

	public IteratorAdapter(Iterator<E> iterator) {
		super();
		this.iterator = iterator;
	}

	@Override
	public boolean hasMoreElements() {
		// TODO Auto-generated method stub
		return iterator.hasNext();
	}

	@Override
	public E nextElement() {
		// TODO Auto-generated method stub
		return iterator.next();
	}

}

 

 Client.java

 

package com.flyingh.client;

import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import com.flyingh.adapter.IteratorAdapter;

public class Client {
	public static void main(String[] args) {
		Set<String> set = new HashSet<String>();
		set.add("zhangsan");
		set.add("lisi");
		set.add("wangwu");
		set.add("zhaoliu");
		set.add("sunqi");
		set.add("qianba");
		System.out.println("**********directly*********");
		System.out.println(set);
		System.out.println("**********foreach(iterator)**********");
		for (String string : set) {
			System.out.print(string + " ");
		}
		System.out.println("\n********iterator***********");
		Iterator<String> iterator = set.iterator();
		while (iterator.hasNext()) {
			System.out.print(iterator.next() + " ");
		}
		System.out.println("\n********enumeration********");
		iterator = set.iterator();
		Enumeration<String> enumeration = new IteratorAdapter<String>(iterator);
		while (enumeration.hasMoreElements()) {
			System.out.print(enumeration.nextElement() + " ");
		}
	}
}

 

 程序运行结果如下:

 

**********directly*********
[zhaoliu, sunqi, wangwu, qianba, lisi, zhangsan]
**********foreach(iterator)**********
zhaoliu sunqi wangwu qianba lisi zhangsan 
********iterator***********
zhaoliu sunqi wangwu qianba lisi zhangsan 
********enumeration********
zhaoliu sunqi wangwu qianba lisi zhangsan 

 

 3).Default Adapter:

Target.java

 

package com.flyingh.target;

public interface Target {
	void fun1();

	void fun2();

	void fun3();

	void fun4();

	void fun5();
}

 

 Adapter.java

 

package com.flyingh.adapter;

import com.flyingh.target.Target;

public abstract class Adapter implements Target {

	@Override
	public void fun1() {
		// TODO Auto-generated method stub

	}

	@Override
	public void fun2() {
		// TODO Auto-generated method stub

	}

	@Override
	public void fun3() {
		// TODO Auto-generated method stub

	}

	@Override
	public void fun4() {
		// TODO Auto-generated method stub

	}

	@Override
	public void fun5() {
		// TODO Auto-generated method stub

	}

}

 

 Adaptee.java

 

package com.flyingh.adaptee;

import com.flyingh.adapter.Adapter;

public class Adaptee extends Adapter {

	@Override
	public void fun2() {
		// TODO Auto-generated method stub
		System.out.println("fun2()");
	}

	@Override
	public void fun3() {
		// TODO Auto-generated method stub
		System.out.println("fun3()");
	}

}

 

 Client.java

 

package com.flyingh.client;

import com.flyingh.adaptee.Adaptee;
import com.flyingh.target.Target;

public class Client {
	public static void main(String[] args) {
		Target adaptee = new Adaptee();
		adaptee.fun2();
		adaptee.fun3();
	}
}

 

 程序运行结果如下:

 

fun2()
fun3()
 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Android中ListView+Adapter

    本文将深入探讨如何在Eclipse开发环境中利用ListView结合Adapter来展示数据。 首先,`ListView`是一个可滚动的视图,用于显示一组项目,每个项目都是一个单独的视图。它通过复用视图(ViewHolder模式)提高性能,...

    android之各种Adapter加载数据

    在Android开发中,Adapter是一个非常重要的组件,它起到了数据源与UI展示之间的桥梁作用。本文将深入探讨Android的Adapter机制,以及如何使用各种Adapter来加载数据。 首先,我们需要理解Adapter的基本概念。...

    sentinel-spring-webmvc-adapter-1.8.0-API文档-中文版.zip

    赠送jar包:sentinel-spring-webmvc-adapter-1.8.0.jar; 赠送原API文档:sentinel-spring-webmvc-adapter-1.8.0-javadoc.jar; 赠送源代码:sentinel-spring-webmvc-adapter-1.8.0-sources.jar; 赠送Maven依赖信息...

    sentinel-spring-webmvc-adapter-1.8.0-API文档-中英对照版.zip

    赠送jar包:sentinel-spring-webmvc-adapter-1.8.0.jar; 赠送原API文档:sentinel-spring-webmvc-adapter-1.8.0-javadoc.jar; 赠送源代码:sentinel-spring-webmvc-adapter-1.8.0-sources.jar; 赠送Maven依赖信息...

    Android自定义adapter的listview

    为了实现更加灵活和丰富的界面展示,我们通常需要对ListView进行自定义,这涉及到自定义Adapter的使用。自定义Adapter允许我们根据需求定制ListView的每一项视图,以适应不同的数据结构和界面设计。 首先,我们需要...

    hp usb network print adapter 驱动程序软件

    【标题】:“hp usb network print adapter 驱动程序软件” 在现代办公环境中,打印机扮演着至关重要的角色,而HP USB Network Print Adapter则是将打印机连接到网络中的关键设备。驱动程序是让硬件设备与操作系统...

    canal.adapter-1.1.4.zip

    【标题】"Canal Adapter 1.1.4版本" Canal是阿里巴巴开源的一个数据库增量日志订阅与消费组件,主要用于实现数据库的实时数据同步。Canal Adapter是其配套的适配器模块,用于将Canal捕获到的数据库变更事件转化为...

    usb 2.0 to fast ethernet adapter

    usb 2.0 to fast ethernet adapter win7 win8 xp驱动, 我的笔记本电脑由于使用时间较长,有线接口有点接触不良,所以上网买了个USB2.0 to Fast Ethernet Adapter 的适配器(将USB口转换为网口,可以插网线),首先...

    canal.adapter-1.1.6.zip

    【标题】"canal.adapter-1.1.6.zip" 提供的是Canal适配器的1.1.6版本,这是一个与数据库变更日志相关的软件组件。 【描述】"canal.adapter-1.1.6.zip" 指出这个压缩包包含的是Canal适配器的特定版本1.1.6,它是一个...

    Apple USB Ethernet Adapter(苹果USB网卡驱动.zip

    Apple USB Ethernet Adapter是一款由苹果公司推出的硬件设备,用于在没有内置以太网接口或无线网络不可用时,为苹果设备提供有线网络连接。这款驱动程序适用于多种Windows操作系统,包括Windows 10、Windows 8.1、...

    sentinel-api-gateway-adapter-common-1.8.0-API文档-中文版.zip

    赠送jar包:sentinel-api-gateway-adapter-common-1.8.0.jar; 赠送原API文档:sentinel-api-gateway-adapter-common-1.8.0-javadoc.jar; 赠送源代码:sentinel-api-gateway-adapter-common-1.8.0-sources.jar; ...

    包装RecyclerView的Adapter实现上拉加载更多

    本文将详细讲解如何通过包装RecyclerView的Adapter来实现“上拉加载更多”的功能,这是一个常见的滚动监听机制,可以提升用户体验,让用户在浏览列表时无缝地加载更多数据。 首先,我们需要了解RecyclerView的基本...

    SIMATIC_PC_Adapter_usbA2.rar

    SIMATIC PC Adapter是一款用于连接个人计算机(PC)与西门子PLC(可编程逻辑控制器)的硬件设备,以便进行编程、调试和监控任务。在早期的SIMATIC PLC系统中,许多型号并不具备以太网接口,因此必须依赖于MPI(Multi...

    Android自定义Adapter适配器

    在Android开发中,Adapter是一个至关重要的组件,它作为数据源与UI控件之间的桥梁,使得数据能够被适配并显示在界面中。本项目聚焦于自定义Adapter的实现,特别是如何将其应用于ListView的数据显示。 首先,理解...

    PC Adapter USB Drive

    "PC Adapter USB Drive" 是一个与个人计算机(PC)适配相关的USB驱动器产品。这种设备通常设计用于将不同类型的接口转换为USB接口,以便于在PC上使用。它可能是硬件适配器,允许用户将非USB设备(如串口或并口设备)...

    sentinel-spring-cloud-gateway-adapter-1.8.0-API文档-中文版.zip

    赠送jar包:sentinel-spring-cloud-gateway-adapter-1.8.0.jar; 赠送原API文档:sentinel-spring-cloud-gateway-adapter-1.8.0-javadoc.jar; 赠送源代码:sentinel-spring-cloud-gateway-adapter-1.8.0-sources....

    esper_adapter_reference

    ### Esper Adapter Reference:深入了解Esper 4.3.0中的Adapter技术 Esper是一个高性能的事件处理引擎,专为实时数据分析而设计。在Esper 4.3.0版本中,Adapter扮演着连接Esper与外部数据源或目标的关键角色。它们...

    Microsoft_LoopBack_Adapter_配置为系统的主网络适配器

    ### Microsoft LoopBack Adapter 配置为系统的主网络适配器 #### 一、概述 Microsoft LoopBack Adapter 是一种特殊的网络适配器,主要用于在没有实际网络连接的情况下进行网络功能的测试。这种虚拟适配器可以在不...

    usb2.0 fast ethernet adapter 驱动

    USB 2.0 Fast Ethernet Adapter 是一款用于将计算机连接到以太网网络的硬件设备,它通过USB接口提供网络连接。QF9700是一款常见的USB 2.0以太网控制器,由不同的硬件制造商生产,适用于各种操作系统,包括Windows 10...

Global site tag (gtag.js) - Google Analytics