设计模式系列2——适配器模式

适配器是一个接口转换器,顾名思义,当我们得到的接口或者类与要求不匹配时,利用适配器对其进行转换,从而达到我们的要求。


适配器模式一般包含三个角色:

1:Target(目标抽象类):是我们需要用的接口或者类样式。

2:Adapter(适配器类):将已有接口或类转换为我们需要的样式。

3:Adaptee(适配者类):已有的接口或者类,待转换。


适配器模式主要有三种:

1、类适配器

2、对象适配器

3、缺省适配器


一、类适配器

//需要用到method2方法
public interface Target {
    public void method1(); 
    public void method2(); 
}

//然而已有类中没有method2方法
public class Adaptee {
    public void method1(){}
}

//所以要使用(继承)适配器并设置目标(实现目标接口)
public class Adapter extends Adaptee implements Target {
    @Override
    public void method2() {
        //巴拉巴拉
    }
}

二、对象适配器

//需要用到method1、2两个方法
public interface Target {
    public void method1();
    public void method2(); 
}

//可是原类中只有一个该怎么办呢
public class Adaptee {
    public void method1(){}
}

public class Adapter {
    //只好在新类中定义原类的私有变量
    private Adaptee adaptee;
    public Adapter(Adaptee adaptee){
        this.adaptee = adaptee;
    }
    public void method1(){
        this.adaptee.method1();
    }
    //并实现原类中没有的方法
    public void method2(){
        //巴拉巴拉
    }
}

三、缺省适配器

//这个接口有太多方法
public interface Adaptee {
    void a();
    void b();
    void c();
    void d();
    void e();
    void f();
}

//只好新建一个抽象类来继承它
public abstract class Adapter implements Adaptee {
    public void a(){}
    public void b(){}
    public void c(){}
    public void d(){}
    public void e(){}
    public void f(){}
}

//继承抽象类就可以实现间接实现接口而不用实现其所有方法了
public class Target extends Adapter {
    public void a(){}
    public void d(){}
}

猜你喜欢

转载自blog.csdn.net/qq_37684824/article/details/83791395
今日推荐