高端个性化网站建设,南通仿站定制模板建站,缩短网址生成器,最新重大新闻一、什么是适配器模式 适配器模式#xff08;Adapter#xff09;的定义如下#xff1a;将一个类的接口转换成客户希望的另外一个接口#xff0c;使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式#xff08;Adapter#xff09;包含以下主要角色Adapter的定义如下将一个类的接口转换成客户希望的另外一个接口使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式Adapter包含以下主要角色
目标Target接口当前系统业务所期待的接口它可以是抽象类或接口。适配者Adaptee类它是被访问和适配的现存组件库中的组件接口。适配器Adapter类它是一个转换器通过继承或引用适配者的对象把适配者接口转换成目标接口让客户按目标接口的格式访问适配者。
二、适配器模式的实现 适配器模式分为类结构型模式和对象结构型模式两种前者类之间的耦合度比后者高且要求程序员了解现有组件库中的相关组件的内部结构所以应用相对较少些。 1、适配者Adaptee类
/*** author FluffyCatkin* version 1.0* date 2020/1/3 0003 14:41* description 适配者Adaptee类它是被访问和适配的现存组件库中的组件接口。*/
public class Adaptee {public void targeeDoSomething(){System.out.println(Adaptee do something..................);}
}
2、目标Target接口 /*** author FluffyCatkin* version 1.0* date 2020/1/3 0003 14:39* description 类适配器Adapter类它是一个转换器通过继承或引用适配者的对象把适配者接口转换成目标接口让客户按目标接口的格式访问适配者。*/
public class ClassAdapter extends Adaptee implements Target {Overridepublic void targetDoSomething() {targeeDoSomething();}
}
3、配器Adapter类 适配器模式分为类结构型模式和对象结构型模式两种。
类适配器Adapter类
/*** author FluffyCatkin* version 1.0* date 2020/1/3 0003 14:39* description 类适配器Adapter类它是一个转换器通过继承或引用适配者的对象把适配者接口转换成目标接口让客户按目标接口的格式访问适配者。*/
public class ClassAdapter extends Adaptee implements Target {Overridepublic void targetDoSomething() {targeeDoSomething();}
}
对象适配器Adapter类 /*** author FluffyCatkin* version 1.0* date 2020/1/3 0003 14:40* description 对象适配器Adapter类它是一个转换器通过继承或引用适配者的对象把适配者接口转换成目标接口让客户按目标接口的格式访问适配者。*/
public class ObjectAdapter implements Target {private Adaptee adaptee;public ObjectAdapter(Adaptee adaptee) {this.adaptee adaptee;}Overridepublic void targetDoSomething() {if (adaptee !null){adaptee.targeeDoSomething();}}
}
4、测试类 /*** author FluffyCatkin* version 1.0* date 2020/1/3 0003 13:51* description 适配器模式** 在现实生活中经常出现两个对象因接口不兼容而不能在一起工作的实例这时需要第三者进行适配。例如讲中文的人同讲英文的人对话时需要一个翻译用直流电的笔记本电脑接交流电源时需要一个电源适配器用计算机访问照相机的 SD 内存卡时需要一个读卡器等。** 在软件设计中也可能出现需要开发的具有某种业务功能的组件在现有的组件库中已经存在但它们与当前系统的接口规范不兼容如果重新开发这些组件成本又很高这时用适配器模式能很好地解决这些问题。* 模式的定义与特点* 适配器模式Adapter的定义如下将一个类的接口转换成客户希望的另外一个接口使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种前者类之间的耦合度比后者高且要求程序员了解现有组件库中的相关组件的内部结构所以应用相对较少些。** 该模式的主要优点如下。客户端通过适配器可以透明地调用目标接口。* 复用了现存的类程序员不需要修改原有代码而重用现有的适配者类。* 将目标类和适配者类解耦解决了目标类和适配者类接口不一致的问题。** 其缺点是对类适配器来说更换适配器的实现过程比较复杂。* 模式的结构与实现* 类适配器模式可采用多重继承方式实现如 C 可定义一个适配器类来同时继承当前系统的业务接口和现有组件库中已经存在的组件接口Java 不支持多继承但可以定义一个适配器类来实现当前系统的业务接口同时又继承现有组件库中已经存在的组件。** 对象适配器模式可釆用将现有组件库中已经实现的组件引入适配器类中该类同时实现当前系统的业务接口。现在来介绍它们的基本结构。* 模式的结构* 适配器模式Adapter包含以下主要角色。目标Target接口当前系统业务所期待的接口它可以是抽象类或接口。* 适配者Adaptee类它是被访问和适配的现存组件库中的组件接口。* 适配器Adapter类它是一个转换器通过继承或引用适配者的对象把适配者接口转换成目标接口让客户按目标接口的格式访问适配者。**/
public class Main {/*** 测试类适配器*/Testpublic void classAdapterTest(){ClassAdapter classAdapter new ClassAdapter();classAdapter.targetDoSomething();}/*** 测试对象适配器*/Testpublic void objectAdapterTest(){Adaptee adaptee new Adaptee();ObjectAdapter objectAdapter new ObjectAdapter(adaptee);objectAdapter.targetDoSomething();}
} 运行结果
类适配器 Adaptee do something..................Process finished with exit code 0对象适配器
Adaptee do something..................Process finished with exit code 0
三、应用场景 适配器模式Adapter通常适用于以下场景
以前开发的系统存在满足新系统功能需求的类但其接口同新系统的接口不一致。使用第三方提供的组件但组件接口定义和自己要求的接口定义不同。
四、优缺点分析 该模式的主要优点如下
客户端通过适配器可以透明地调用目标接口。复用了现存的类程序员不需要修改原有代码而重用现有的适配者类。将目标类和适配者类解耦解决了目标类和适配者类接口不一致的问题。 在很多业务场景中符合开闭原则。 其缺点是
适配器编写过程需要结合业务场景全面考虑可能会增加系统的复杂性。增加代码阅读难度降低代码可读性过多使用适配器会使系统代码变得凌乱。
代码地址https://gitee.com/fluffycatkin/JavaDesignModel.git 原文出处http://c.biancheng.net/view/1361.html