适配器模式实例之算法适配

最新更新时间:2018-01-15来源: 互联网关键字:适配器模式  适配器 手机看文章 扫描二维码
随时随地手机看文章

在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。


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


基本概念


客户:需要调用我们的代码的对象。


Adapter模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。


主要内容


(1)类适配器:


当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通过创建子类来实现适配。


下面是类适配器的UML图:


(2)对象适配器:


对象适配器”通过组合除了满足“用户期待接口”还降低了代码间的不良耦合。在工作中推荐使用“对象适配”。下面是对象适配器的UML图:


(3) 缺省适配器模式:


缺省适配器模式是一种特殊的适配器模式,但这个适配器是由一个抽象类实现的,并且在抽象类中要实现目标接口中所规定的所有方法,但很多方法的实现都是“平庸”的实现,也就是说,这些方法都是空方法。而具体的子类都要继承此抽象类。


结构型模式之对象适配器模式


现有一个接口DataOperaTIon定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch的binarySearch(int[],int)方法实现了二分查找算法。现使用适配器模式设计一个系统,在不修改源代码的情况下将类QuickSort和类BinarySearch的方法适配到DataOperaTIon接口中。绘制类图并编程实现。


代码


[java] view plain copypackage 适配器模式实例之算法适配;


public interface DataOperaTIon { //目标类


public void sort(int sort[], int i, int j);


public int search(int search[], int n);


}


[java] view plain copypackage 适配器模式实例之算法适配;


public class AlgoTIthmAdapter implements DataOperation{ //适配器类


private QuickSort quick;


private BinarySearch binary;


public AlgotithmAdapter(QuickSort quick) {


this.quick = quick;


}


public AlgotithmAdapter(BinarySearch binary) {


this.binary = binary;


}


public void sort(int sort[], int i, int j) {


quick.quickSort(sort, i, j);


}


public int search(int search[], int n) {


return binary.binarySearch(search, n);


}


}


[java] view plain copypackage 适配器模式实例之算法适配;


public class QuickSort { //适配者类


//划分数组


int partion(int array[], int p, int r) {


int x = array[r];


int i = p - 1;//注意这点,把i设成负值,然后作为移动的标志


int j;


for (j = p; j 《 r; j++) {


if (array[j] 《= x) {


i++;


int temp = array[j];


array[j] = array[i];


array[i] = temp;

}


}


int temp = array[j];


array[j] = array[i + 1];


array[i + 1] = temp;


return i+1;//返回的应该是交换后的哨兵的位置


}


//递归解决每个划分后的小数组


void quickSort(int[] array, int p, int r) {


if (p 《 r) {


int q = partion(array, p, r);


quickSort(array, p, q - 1);


quickSort(array, q + 1, r);


}


}


}


[java] view plain copypackage 适配器模式实例之算法适配;


public class BinarySearch { //适配者类


public int binarySearch(int[] srcArray, int des){


int low = 0;


int high = srcArray.length-1;


while(low 《= high) {


int middle = (low + high)/2;


if(des == srcArray[middle]) {


return middle;


}else if(des 《srcArray[middle]) {


high = middle - 1;


}else {


low = middle + 1;


}


}


return -1;


}


}


[java] view plain copypackage 适配器模式实例之算法适配;


public class Client { //客户端类


public static void main(String[] args) {


int[] array = { 4, 3, 5, 2, 3, 6, 8, 9, 18, 12, 53, 20};


int i;


System.out.print(“排序前:”);


for (i=0; i《array.length; i++)


System.out.print(array[i]+“ ”);


BinarySearch binary = new BinarySearch();


AlgotithmAdapter algotithm1 = new AlgotithmAdapter(binary);


System.out.println(“\n通过二分查找得到数字5:位于数组的第”+

(algotithm1.search(array, 5)+1)+“位”);


QuickSort sort = new QuickSort();


AlgotithmAdapter algotithm2 = new AlgotithmAdapter(sort);


algotithm2.sort(array, 0, array.length - 1);


System.out.println(“------------------------------”);


System.out.print(“排序后:”);


for (i=0; i《array.length; i++)


System.out.print(array[i]+“ ”);


//int[] src = new int[] {1, 3, 5, 7, 8, 9};


System.out.println(“\n通过二分查找得到数字5:位于数组的第”+

(algotithm1.search(array, 5)+1)+“位”);


}


}

关键字:适配器模式  适配器 编辑:王磊 引用地址:适配器模式实例之算法适配

上一篇:适配器模式和装饰模式的区别
下一篇:适配器模式的优缺点

推荐阅读最新更新时间:2023-10-12 23:00

高科技改造 这个装置能将普通显微镜变成数字显微镜
虽然普通显微镜带我们走进了全新的微观世界,可“独乐乐不如众乐乐”。传统显微镜只能一人观看,图像无法放大实在是个让人头疼的问题。尽管现如今数码显微镜的出现解决了这个难题,可高昂的价位并不是人人都可以接受。 好在日前,一个堪称完美的替代性解决方案—iADAPTER问世。只需要一个纳米吸垫和专用的固体适配器,任何传统光学显微镜都可以变身数码显微镜。各位有需要的小伙伴,千万不要错过。 先来看看iADAPTE解决方案中的适配器。 为了适配器本身的稳定性以及保护智能手机和显微镜设备,iADAPTE的适配器采用了空气工艺及铝合金和工程塑料组成制成。 在近距离使用的过程中,对于适配器本身的稳定性要求极高。而iADAPTE的适配器本身的
[家用电子]
高科技改造 这个装置能将普通显微镜变成数字显微镜
USB电池充电规范1.2版概述及适配器仿真器的重要性
  引言   无论您身处何处,环顾四周时,很可能会看到有人正在使用便携式设备。无论是在家里、车上还是插入到计算机,USB供电的便携设备均需要采用智能方法确定正常工作以及充电所需的合适功率。由于便携设备种类繁多、USB端口千差万别以及可充电电池的特性复杂,2010年颁布的USB电池充电规范1.2版 (简称为BC1.2) 成为建立通过USB端口为电池充电的正确方式的关键标准。但是,即使有了BC1.2规范,有些便携设备制造商仍然采用专有的充电器,使得USB电池充电领域更为复杂。   本文讨论USB电池充电最新行业标准的推动力及其定义的技术规范,也给出了实现对各种专有便携充电设备进行大电流充电的USB端口的简单策略。   电池充电标
[电源管理]
USB电池充电规范1.2版概述及<font color='red'>适配器</font>仿真器的重要性
实现低于/高于75W应用的绿色适配器解决方案
  能源问题如今已落实到厂商生产的具体产品上。“能源之星”的提出为产品流入市场前设置了一道“坎”。最新实现的“能源之星”外部电源规范对电源 适配器 的工作能效、空载能耗等提出了更高的要求。而缩短产品开发周期,并加快上市进程是当今各大厂商“狠抓落实”的目标。如何既满足“能源之星”又达到自身的目的呢?本文分别基于低于75W应用及高于75W需要PFC的应用,分析了电源控制器实现这些规范所需要具备的特性,并提供相关的测试数据予以佐证。   电源是电子系统中必不可少的组件。除了电视和计算机等产品中所使用的内部电源转换器,外部电源适配器也广泛应用于手机、DSL调制解调器、打印机、笔记本电脑及游戏机等领域,以至于一个普通家庭可能就会拥有
[电源管理]
实现低于/高于75W应用的绿色<font color='red'>适配器</font>解决方案
iPhone 7取消耳机口的传闻又真实一分:这个特殊适配器出现
        自动播放 越南网站曝光 iPhone 7 Lightning 转3.5毫米适配器 iPhone 7取消耳机口的传闻又真实一分     1/5       越南网站tinhte.vn今天曝光了一个苹果Lightning接口转3.5毫米耳机口适配器,这让iPhone 7要取消耳机口的传言有真实了一步。 分享 | 评论(0) 01 02 03 04 05   新浪手机讯 7月29日上午消息,越南网站tinhte.vn今天
[手机便携]
TI针对消费类电子与AC适配器推出节能芯片
德州仪器(TI)宣布推出一款创新的绿色环保模式电源管理电路,该产品能够显著提高消费类电子系统与AC电源适配器的能量效率。 TI的绿色环保模式8引脚准谐振控制器UCC28600不仅能够在满负载与轻负载的工作条件下提供较高的功率,而且还能降低无负载待机模式下的功耗。例如,该器件可使DLP高清电视、LCD与等离子数字电视中待机电源在有效功率模式下的效率超过88%,而无负载功耗级别不到300mW。此外,UCC28600还可显著提高笔记本电脑与游戏系统AC适配器的功率,以支持40W到200W的功率范围。 以8引脚封装提供14引脚性能 UCC28600 是一款回扫脉冲宽度调制 (PWM) 器件,可有效满足美国环境保护署针对消
[新品]
USB电源适配器的电路保护方案
随着当今社会人们手中的手机、平板电脑等智能手持设备功能的不断升级强大,娱乐和个性化的应用也使得设备的 电池 的续航能力成为其中的一个死角。现实生活中我们可能经常会看到我们周边的朋友随身带个 移动电源 ,没有随身电源就只能随时找地方对设备充电了。因此 电源适配器 作为标配产品一直成了人们的必需品。   从苹果手机的USB电源适配等为代表的小型化适配器越来越受人亲睐,越来越多的电路元器件的SMD小型化封装让以往常见的电源充电器能够做到更加的小巧玲珑,集美观与便携于一体。 本文从内部电路重要的安规器件——保险丝的应用角度,说明AEM科技推出的创新型SMD 250VAC FUSE——MF2410系列 适应潮流,如何布局在这类小尺寸AC/
[嵌入式]
高性价比的电源适配器应用电路设计
  本文所讨论的低功率电源适配器主要针对输出功率5~15瓦的电源系统。主要有两类方案,即集成PWM控制器方案和分立PWM控制器方案。图1是集成PWM控制器的典型应用图,U1采用DIP-8封装,内部集成了PWM控制器和功率MOSFET。变压器输入侧电路包括:由X电容CX和共模电感L-COM组成的输入滤波电路,由BD组成的整流桥电路,由U1组成的控制及功率电路。变压器输出侧包括:二极管D10等组成的输出整流滤波电流;固定电压基准U2等组成的稳压反馈电路。该方案由于功率器件和PWM器件集成在一个封装内,故集成度较高,但散热设计难。图2是分立PWM控制器方案,U1多采用SOIC-8或SOT23-6, 内部只含PWM控制器,功率器件Q1是M
[电源管理]
高性价比的电源<font color='red'>适配器</font>应用电路设计
200W电源适配器的GreenPoint设计
  安森美半导体推出游戏机用200 W电源适配器的GreenPoint™参考设计。   虽然美国加州能源委员会(CEC, California Energy Commission)、能源之星(ENERGY STAR®)和欧洲Code of Conduct等规范标准机构的目标都在单输出电压适配器上,但这个200 W的游戏机用适配器却拥有双输出电压。这款GreenPoint™参考设计在满载时提供90%的电源工作能效,而待机能耗则低于1 W。   安森美半导体电源管理部电源应用及市场总监Laurent Jenck说: “这款200 W电源适配器参考为我们GreenPoint™系列的新成员,进一步巩固安森美半导体在高能效电源适
[新品]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved