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

38 篇文章 0 订阅
25 篇文章 0 订阅

学习路径: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即可,使用的方式更原来相同。约定大于配置,提高架构稳定。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值