适配器模式(Adapter)

来源:互联网 发布:韩国扫二维码软件 编辑:程序博客网 时间:2024/06/03 17:21

适配器模式:
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。经常举的例子是插头,插座是2口的,但电器插头是3口的,若想正常使用电器就需要转换插头(3口转2口),这个转换插头就是适配器。

适配器适用范围:
系统需要使用现有的类,而此类的借口不符合系统的要求
想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。


适配器模式有两种实现方式:对象适配器和类适配器。区别在于类适配器用继承的方式使用原类(接口),而对象适配器采用委托的方式使用源。


  • 对象适配器:
    客户需要使用三插头电器(客户),可是插座只是二插头的(原有系统),故采用三插头转二插头适配器,目标是使得三插头电器能够使用二插头插座的功能(功能在函数operateA(),operateB()中)。对象适配器采用委托方式,首先在“二插头转三插头类”中(实现三插头接口),定义二插头接口变量(委托对象),以便将实现二插头对象的引用传给它,来回调原有系统中的方法(operateA(),operateB()).

这里写图片描述

//原有系统中的二插头接口public interface 二插头{    void operateA();    void operateB();}//实现原有系统中接口的而二插头类public class 实现接口的二插头类 implements 二插头{    public void operateA(){}//重写接口方法时,必须加上public。因为接口方法默认类型public abstract    pubic void operateB(){}}//客户要求的三插头接口public interface 三插头{    public void operateC();    pubic void operateD();}//对象适配器,将三插头转换而二插头,本身是一个实现客户要求的三插头的类public class 二插头转三插头类 implements 三插头{    二插头 adpte;//定义原系统中的接口变量(定义委托对象)    public 二插头转三插头类(二插头 adpte1){//接口做参数,准备接口回调:把实现二插头接口的类创建的对象的引用传递给该接口声明的接口变量参数,那么该接口变量就可以调用被类实现的接口中的方法。        this.adpte=adpte1;    }    public void operateC(){        //可回调实现接口的二插头类中的方法    }    public void operateD(){        //可回调实现接口的二插头类中的方法    }} public class 客户类{    public static void main(String[]args){        二插头 adpte;        adpte=new 二插头转三插头类(new 实现接口的二插头类());//存放对象的引用        adpte.operateA();        adpte.operateB();    }}

  • 类适配器

    和对象适配器不同,类适配器器通过继承原有系统的类,这样便可任意访问原有系统中的方法。
    这里写图片描述

0 0
原创粉丝点击