- 浏览: 18311 次
- 性别:
- 来自: 西安
最新评论
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()
发表评论
文章已被作者锁定,不允许评论。
-
Interpreter
2011-11-24 21:19 839Interpreter Pattern:其意图是给定一个语言, ... -
Visitor
2011-11-24 17:37 659Visitor Pattern:表示一个作用于某对象结构中的各 ... -
Mediator
2011-11-24 16:22 663Mediator Pattern: 用一 ... -
Prototype
2011-11-24 11:32 605Prototype Pattern:就是通过复制现在已经存在的 ... -
Memento
2011-11-23 21:56 685Memento Pattern:在不破坏封闭的前提下,捕获一个 ... -
Flyweight
2011-11-23 18:38 651享元模式以共享的方式高效地支持大量的细粒度对象. 1).Fl ... -
Builder
2011-11-22 16:38 763Builder Pattern:可以将一个产品的内部表象与产品 ... -
Bridge
2011-11-22 15:05 684桥梁模式的用意是"将抽象化(Abstraction) ... -
Chain Of Responsibility
2011-11-21 23:05 658Chain Of Responsibility Pattern ... -
Abstract Factory
2011-11-21 22:00 644下面以Mac和PC的CPU和RAM为例,代码如下: Cpu. ... -
Proxy
2011-11-18 18:47 661Proxy Pattern:对其他对象提供一种代理以控制对这个 ... -
State
2011-11-18 15:57 678State Pattern:当一个对象的内在状态改变时允许改变 ... -
Composite
2011-11-17 17:09 793Composite Pattern:意图是将对象组合成树形结构 ... -
Iterator
2011-11-16 16:56 890Iterator Pattern:其意图是提供一种方法顺序访问 ... -
Template Method
2011-11-16 11:43 660模板方法模式:在一个方法中定义一个算法的骨架,而将一些实 ... -
Facade
2011-11-15 23:00 597Facade Pattern:为子系统中的各类(或结构与方法) ... -
Command
2011-11-14 23:06 5731).下面以Boss和Clerk为例: Clerk.java ... -
Factory Method
2011-11-13 20:44 595Simple Factory: 以Fruit为例,以下是实现 ... -
Decorator
2011-11-12 23:09 571装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的 ... -
Observer
2011-11-12 21:30 601观 察 者 模 式 定义了对象之间的一对多依赖,这样一来 ...
相关推荐
本文将深入探讨如何在Eclipse开发环境中利用ListView结合Adapter来展示数据。 首先,`ListView`是一个可滚动的视图,用于显示一组项目,每个项目都是一个单独的视图。它通过复用视图(ViewHolder模式)提高性能,...
在Android开发中,Adapter是一个非常重要的组件,它起到了数据源与UI展示之间的桥梁作用。本文将深入探讨Android的Adapter机制,以及如何使用各种Adapter来加载数据。 首先,我们需要理解Adapter的基本概念。...
赠送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依赖信息...
赠送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依赖信息...
为了实现更加灵活和丰富的界面展示,我们通常需要对ListView进行自定义,这涉及到自定义Adapter的使用。自定义Adapter允许我们根据需求定制ListView的每一项视图,以适应不同的数据结构和界面设计。 首先,我们需要...
【标题】:“hp usb network print adapter 驱动程序软件” 在现代办公环境中,打印机扮演着至关重要的角色,而HP USB Network Print Adapter则是将打印机连接到网络中的关键设备。驱动程序是让硬件设备与操作系统...
【标题】"Canal Adapter 1.1.4版本" Canal是阿里巴巴开源的一个数据库增量日志订阅与消费组件,主要用于实现数据库的实时数据同步。Canal Adapter是其配套的适配器模块,用于将Canal捕获到的数据库变更事件转化为...
usb 2.0 to fast ethernet adapter win7 win8 xp驱动, 我的笔记本电脑由于使用时间较长,有线接口有点接触不良,所以上网买了个USB2.0 to Fast Ethernet Adapter 的适配器(将USB口转换为网口,可以插网线),首先...
【标题】"canal.adapter-1.1.6.zip" 提供的是Canal适配器的1.1.6版本,这是一个与数据库变更日志相关的软件组件。 【描述】"canal.adapter-1.1.6.zip" 指出这个压缩包包含的是Canal适配器的特定版本1.1.6,它是一个...
Apple USB Ethernet Adapter是一款由苹果公司推出的硬件设备,用于在没有内置以太网接口或无线网络不可用时,为苹果设备提供有线网络连接。这款驱动程序适用于多种Windows操作系统,包括Windows 10、Windows 8.1、...
赠送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的基本...
SIMATIC PC Adapter是一款用于连接个人计算机(PC)与西门子PLC(可编程逻辑控制器)的硬件设备,以便进行编程、调试和监控任务。在早期的SIMATIC PLC系统中,许多型号并不具备以太网接口,因此必须依赖于MPI(Multi...
在Android开发中,Adapter是一个至关重要的组件,它作为数据源与UI控件之间的桥梁,使得数据能够被适配并显示在界面中。本项目聚焦于自定义Adapter的实现,特别是如何将其应用于ListView的数据显示。 首先,理解...
"PC Adapter USB Drive" 是一个与个人计算机(PC)适配相关的USB驱动器产品。这种设备通常设计用于将不同类型的接口转换为USB接口,以便于在PC上使用。它可能是硬件适配器,允许用户将非USB设备(如串口或并口设备)...
赠送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 4.3.0中的Adapter技术 Esper是一个高性能的事件处理引擎,专为实时数据分析而设计。在Esper 4.3.0版本中,Adapter扮演着连接Esper与外部数据源或目标的关键角色。它们...
### Microsoft LoopBack Adapter 配置为系统的主网络适配器 #### 一、概述 Microsoft LoopBack Adapter 是一种特殊的网络适配器,主要用于在没有实际网络连接的情况下进行网络功能的测试。这种虚拟适配器可以在不...
USB 2.0 Fast Ethernet Adapter 是一款用于将计算机连接到以太网网络的硬件设备,它通过USB接口提供网络连接。QF9700是一款常见的USB 2.0以太网控制器,由不同的硬件制造商生产,适用于各种操作系统,包括Windows 10...