初识适配器模式

适配器模式


引入

**生活中的例子:**当我们使用手机充电时,充电器起到了转换器的作用,它将家用的220伏特电压转换成适合手机充电的5伏特电压。

适配器模式的三种类型

命名原则:适配器的命名应基于资源如何传递给适配器来进行。

  1. 类适配器模式:这种方式直接通过类实现。在适配器(Adapter)中,源(src)被当做一个类直接继承。
  2. 对象适配器模式:这种方式通过持有对象来实现。在适配器(Adapter)中,源(src)作为一个对象被持有。
  3. 接口适配器模式:这种方式通过实现接口来应用。在适配器(Adapter)中,源(src)作为一个接口被实现。
具体代码示例
类适配器模式类图

类适配器模式

java 复制代码
package com.lucifer.A07_Adapter.classAdapter;
//适配器
public class voltageAdapter extends voltage220v implements Ivoltage5v{
    public int output5v() {
        int src = output220v();
        int dst = src/44;
        return dst;
    }
}

缺点:使用了继承,且适配器中有src,增加使用成本

对象适配器模式

java 复制代码
package com.lucifer.A07_Adapter.objectAdapter;
//适配器
public class voltageAdapter implements Ivoltage5v {
    private voltage220v voltage220v;
    //通过构造器传入--聚合关系
    public voltageAdapter(com.lucifer.A07_Adapter.objectAdapter.voltage220v voltage220v) {
        this.voltage220v = voltage220v;
    }
    public int output5v() {
        int dst = 0;
        if(null!=voltage220v){
            int src = voltage220v.output220v();
            System.out.println("使用对象适配器进行转化");
            dst = src/44;
            System.out.println("适配完成");
            return dst;
        }else {
            return 0;
        }
    }
}

采用了合成复用原则(泛化->聚合)

接口适配器模式

java 复制代码
package com.lucifer.A07_Adapter.interfaceAdapter;

public class client_m1 {
    public static void main(String[] args) {
        absAdatpter absAdatpter = new absAdatpter(){
          //只需要关系需要使用的方法
          public void m1(){
              System.out.println("使用了m1的方法");
          }
        };
        absAdatpter.m1();
    }
}
在源码里面的使用
  1. SpringMvc 中的 HandlerAdapter, 就使用了适配器模式

  2. 使用 HandlerAdapter 的原因分析:

可以看到处理器的类型不同,有多重实现方式,那么调用方式就不是确定的,如果需要直接调用 Controller 方

法,需要调用的时候就得不断是使用 if else 来进行判断是哪一种子类然后执行。那么如果后面要扩展 Controller,

就得修改原来的代码,这样违背了 OCP 原则。

相关推荐
Amagi.3 天前
Java设计模式-适配器模式
java·设计模式·适配器模式
Dxy12393102166 天前
Python适配器模式详解:让不兼容的接口协同工作
开发语言·python·适配器模式
Ares-Wang9 天前
设计模式》》门面模式 适配器模式 区别
设计模式·适配器模式
不修×蝙蝠9 天前
设计模式深度解析:单例、工厂、适配器与代理模式
单例模式·设计模式·代理模式·适配器模式·工厂
hqxstudying10 天前
Java行为型模式---策略模式
java·开发语言·建造者模式·适配器模式·策略模式
vvilkim13 天前
深入理解设计模式:适配器模式及其应用实践
适配器模式
找了一圈尾巴13 天前
设计模式(结构型)-适配器模式
设计模式·适配器模式
你我约定有三13 天前
设计模式--适配器模式
java·设计模式·适配器模式
络713 天前
Java4种设计模式详解(单例模式、工厂模式、适配器模式、代理模式)
单例模式·设计模式·代理模式·适配器模式·工厂模式
贱贱的剑13 天前
5.适配器模式
设计模式·适配器模式