【java_设计模式】适配器模式、spring相关

学习路径:https://coding.imooc.com/class/270.html

  • 前言
    适配器模式、外观模式、装饰者模式都存在语义上的共同点。装饰者模式和外观模式的区别:

    外观模式
    装饰者模式

    适配器模式的粒度与外观模式的粒度不同,适配器可以小到适配一个方法,但是外观模式是对子系统之间的封装。

  • 应用场景

    1. Spring架构中Handler拓展的时候的源码实现
    2. 不是软件设计阶段考虑的设计模式,是维护阶段,适配不同产品、不同厂家造成功能类似但是接口不相同的情况下使用。
		AC220 ac220 = new AC220();
        // 原本的电压
        ac220.outputAC220();

        // 需要5V的直流电的时候直接使用适配器
        DC5 dc5 = new PowerAdapter();
        // 这个适配器里面已经包含了AC220的实例,屏蔽了交流电的外部表现,用户直接用5V直流电就好了
        dc5.outputDC5V();
// 以220V交流电适配为5v直流电为例子
public class AC220 {
    public int outputAC220(){
        int output = 220;
        System.out.println("输出交流电" + output);
        return output;
    }
}
public interface DC5 {
    int outputDC5V();
}
public class PowerAdapter implements DC5 {
    private AC220 ac220 = new AC220();
    @Override
    public int outputDC5V() {
        int adapterInput = ac220.outputAC220();
        // 变压器
        int adapterOutput = adapterInput/44;

        System.out.println("使用PowerAdapter输入AC:" + adapterInput
        + " 使用PowerAdapter输出DC:"+adapterOutput);
        return adapterOutput;
    }
}
  • 拓展

Spring 的Controller的最终实现类就是一个需要适配的类,Controller有许多实现类,springMVC HandlerAdapter也对应了许多Adapter实现类. 不同的Handler会触发不同的HandlerAdapter。 所以增加一个自定义Controller的时候只需要增加一个Controller的实现类,和HandlerAdapter即可,使用的方式更原来相同。约定大于配置,提高架构稳定。

你可能感兴趣的:(Java,设计模式,Spring)