现在的位置: 首页 > 综合 > 正文

java设计模式学习笔记5 适配器模式几种实现方式

2014年07月17日 ⁄ 综合 ⁄ 共 1341字 ⁄ 字号 评论关闭

适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,起到一种适配的作用。

适配器模式的构成:

---目标抽象角色(Target):定义用户需要的特定领域的接口,(用户可以调用的类)

---适配器(Adapter):调用另一接口,作为一个转换器(起到适配的作用,实现Target接口)

---适配器(Adaptee): 定义一个接口,Adapter需要接入(用户最终需要使用的类,类型不匹配,通过Adapter转成我们可以使用的类型即Target)

适配器模式是java中使用广泛的使用模式,有三种实现方式

1,类适配器(采用继承方式)
2,对象适配器(采用对象组合的方式)推荐使用
3,缺省的适配器模式

一、类适配器(继承方式)

编写Taget

/**
 * Created by charleszhu on 14-2-15.
 * 目标抽象角色
 */
public interface Target {

    public void method();

}

编写需要使用的Adaptee类

/**
 * Created by charleszhu on 14-2-15.
 */
public class Adaptee {

    public void realMethod(){ //最终想要调用的方法

        System.out.println("realMethod invoked!!!");

    }
}

使用继承的方式编写适配器Adapter

/**
 * Created by charleszhu on 14-2-15.
 */
public class Adapter extends Adaptee implements Target {
    @Override
    public void method() {

        // 因为继承了Adaptee,所以可以用this指向Adaptee对象
        this.realMethod();

    }
}

最终便实现了利用Target的method调用realMethod方法

编写测试的Client类

/**
 * Created by charleszhu on 14-2-15.
 */
public class Client {

    public static void main(String[] args) {

        Target target = new Adapter();
        target.method();

    }

}

打印结果必然是:realMethod invoked!!!

二、使用对象组合方式

其余实现都是一样的,知识Adapter的不用在继承Adaptee,而是将Adaptee当做他的成员变量之一,通过Adapter的变量进行传参

/**
 * Created by charleszhu on 14-2-15.
 */
public class Adapter1 implements Target{
   
    private Adaptee adaptee;

    public Adapter1(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void method() {
        
        adaptee.realMethod();
        
    }
}

只需在测试类的时候传一个new Adaptee()即可;

三、缺省的适配器模式

在awt,swing中使用的颇多,使用适配器空实现鼠标和窗口监听器的接口,之后可以单独调用相关方法。

抱歉!评论已关闭.