时间:2021-05-19
概述
将一个类的接口转换成用户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
两种实现方式
1.类的适配器模式:
2.对象的适配器模式:
类的适配器模式的UML图,如下:
类的适配器模式把适配的类的API转换成为目标类的API。
上图设计的角色有:
目标角色(Target):这就是所期待得到的接口。
源角色(Adapee):现在需要适配的接口。
适配器角色(Adapter):是本模式的核心,适配器把源接口转换成目标接口。
代码示例:
interface Target{ void method1(); void method2(); //期待得到该方法}//源类中不具备method2中的方法。class Adaptee{ public void method1(){ System.out.println("method1"); }}class Adapter extends Adaptee implements Target{ @Override public void method2() { System.out.println("this is target method"); }}public class MainTest { public static void main(String arg[]) { Target target = new Adapter(); target.method2(); }}对象的适配器模式的UMl图,如下:
核心思路与类的适配器模式相同,只是将Adapter类修改,不继承Adaptee类,而是持有Adaptee类的引用。代码如下:
interface Target{ void method1(); void method2();}class Adaptee{ public void method1(){ System.out.println("method1"); }}class Adapter implements Target{ private Adaptee adaptee; public Adapter(Adaptee adaptee){ this.adaptee = adaptee; } @Override public void method2() { System.out.println("this is target method"); } @Override public void method1() { // TODO Auto-generated method stub adaptee.method1(); }}public class MainTest { public static void main(String arg[]) { Target target = new Adapter(new Adaptee()); target.method2(); }}适配器模式的优缺点:
更好的复用性,更好的扩展性。系统需要使用现有的类,而此类的接口不符合系统的需要,那么通过适配器模式就可以让这些功能得到更好的复用。在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
缺点:过多的使用适配器,会让系统非常凌乱,不易整体把握。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份。为何使用适配器模式我们经常碰
本文实例讲述了PHP设计模式之适配器模式(Adapter)原理与用法。分享给大家供大家参考,具体如下:这个适配器模式,就是为了将一个类的接口转换成客户希望的另外
本文实例讲述了PHP设计模式之适配器模式原理与用法。分享给大家供大家参考,具体如下:一、什么是适配器模式适配器模式有两种:类适配器模式和对象适配器模式。其中类适
本文实例讲述了Java适配器模式应用之电源适配器功能。分享给大家供大家参考,具体如下:一、模式定义存在两种适配器模式1对象适配器模式,在这种适配器模式中,适配器
Java适配器模式最近学习java基础知识,学习适配器的时候疑惑很多,上网查下资料,对于Adapter的资料很多,但是比较下本篇不错,这里记录下,大家需要的可以