适配器模式

来源:互联网 发布:编程中什么是栈 编辑:程序博客网 时间:2024/06/01 20:34

    • 什么是适配器模式
    • 类关系描述
    • 代码描述
    • 适配器模式的使用场景
    • 适配器模式的思考

什么是适配器模式

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

类关系描述

这里写图片描述

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();    }}

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

适配器模式的使用场景

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

适配器模式的思考

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