java设计模式之适配器模式(Adapter)

网友投稿 230 2023-06-20


java设计模式之适配器模式(Adapter)

概述

将一个类的接口转换成用户希望的另外一个接口,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() {

// Thttp://ODO Auto-generated method stub

adaptee.method1PcfYbG();

}

}

public class MainTest {

public static void main(String arg[]) {

Target target = new Adapter(new Adaptee());

target.method2();

}

}

适配器模式的优缺点:

更好的复用性,更好的扩展性。系统需要使用现有的类,而此类的接口不符合系统的需要,那么通过适配器模式就可以让这些功能得到更好的复用。在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。

缺点:过多的使用适配器,会让系统非常凌乱,不易整体把握。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatis中 XML配置详解
下一篇:java设计模式之桥接模式(Bridge)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~