重学设计模式-适配器模式-spring当中的应用

85 阅读2分钟

适配器 设计模式

1.定义

将一个类的接口转换成客户期望的另一个接口

1.1 特点

使原本接口不兼容的类可以一起工作

1.2 类型 : 结构型

2.适用场景

​ 1、以及存在的类,它的方法和需求不匹配时(方法结果相同或相似)

​ 2、不是软件设计阶段考虑的设计模式,是随着软件维护 由于不同产品 不同厂家造成功能类似而接口不相同情况下的解决方案

3.缺点

1.适配器编写过程需要全面考虑,可能会增加系统的复杂性

2.增加系统代码可读的难度

4.优点

​ 1.能提高类的透明性和复用,现有的类复用但不需要改变

​ 2.目标类和适配器类解耦 提高程序扩展性

​ 3.符合开闭原则

5.适配器-扩展

1.对象适配器

2.类适配器

6.适配-相关的设计模式

适配器模式和外观模式 两个适配的粒度不同

7.ulm 设计图 在这里插入图片描述

8.代码如下

package com.zw.design.pattern.creational.structural.adapter.v2;

public class AC220 {
    public int outAc220V(){
        int output=220;
        System.out.println("output = 输出交流电 " + output+" v");
        return output;
    }
}
package com.zw.design.pattern.creational.structural.adapter.v2;

public interface DC5 {
    int outputDC5V();
}

2.适配类

package com.zw.design.pattern.creational.structural.adapter.v2;

public class PowerAdapter implements DC5 {
    private AC220 ac220=new AC220();
    @Override
    public int outputDC5V() {
        int abdinput=ac220.outAc220V();
        //变压器
        int output=abdinput/44;
        System.out.println("output = 输出交流电 " + abdinput+" v"+" 最后输出交流电"+output);
        return output;
    }
}

3.测试类

package com.zw.design.pattern.creational.structural.adapter.v2;

public class Test {
    public static void main(String[] args) {
        DC5 dc5=new PowerAdapter();
        dc5.outputDC5V();
    }
}

框架源码解析

在spring框架当中Aop包下 这个接口AdvisorAdapter 下实现类MethodBeforeAdviceAdapter 这个是增强方法运行之前的 在这里插入图片描述 在SpringMvc 当中使用适配器设计模式应用HandlerAdapter接口 比如我们经常使用Controller 就是SimpleControllerHandlerAdapter的实现 在这里插入图片描述 代码如下