适配器模式

什么是适配器模式

  • 将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间
    这里写图片描述

类关系描述

这里写图片描述

RealAction类是已经上线的类,客户用着它的realCall()方法实现了相应的需求,但是现在客户要求接口发生变化,Client那边现在需要实现Subject接口的类,但是需要的功能没有发生变化,意味着还是需要realCall()这个方法,为了不改变已经上线的RealAction类,我们可以让实现了Subject接口的类Adapter内部持有一个RealAction的引用,给用户Adapter,背后使用RealAction类的realCall方法

代码描述

  • Client.java
public class Client {
    Subject subject;

    public Client(Subject subject) {
        this.subject = subject;
    }

    //用户调用的方法
    public void doSomething() {
        subject.call();
    }
}
  • Subject.java
public interface Subject {
    void call();
}
  • Adapter.java

public class Adapter implements Subject{

    RealAction realAction;

    public Adapter(RealAction realAction) {
        this.realAction = realAction;
    }

    @Override
    public void call() {
        realAction.realCall();
    }

}
  • RealAction.java
public class RealAction {
    public void realCall() {
        System.out.println("call RealAction");
    }
}
  • 我们来看一下测试main方法
public class Main {
    public static void main(String[] args) {
        //创建一个已经上线的类(不能随意修改类中的细节)
        RealAction realAction = new RealAction();
        //创建一个适配器,把已经上线的类传递进去
        Adapter adapter = new Adapter(realAction);

        //创建客户类,把adapter传递进去
        Client client = new Client(adapter);
        //客户调用方法实现需求
        client.doSomething();
    }
}

当客户改变接口时,我们不需要修改上线的类,只需要从中间加一个适配器即可

适配器模式的使用场景

  • 你有动机修改一个已经上线的接口时,使用适配器模式,将会大大减低你工作的复杂度

适配器模式的思考

  • 适配器模式不是在设计阶段该考虑的一种模式,它属于解决多变需求或者前期缺陷设计的一种解决方案,它往往用在开发过程中,而不是最开始的设计中,注意,开发程序不应该陷入过度设计的泥潭
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值