美文网首页
设计模式(九)-- 适配器模式

设计模式(九)-- 适配器模式

作者: 信仰年輕 | 来源:发表于2018-11-30 18:54 被阅读0次

    源代码
    GitHub源代码

    1.本文目标

    本文目标是为了让大家认识并理解适配器模式

    2.基本套路

    定义:将一个类的接口转换成客户期望的另一个接口
    类型:结构型
    选择关键点:定制适配器的选择关键点在于是否有更加优良的替代方案,缺省适配器的选择关键点在于接口中的方法是否可以不全部提供,且都有缺省方案
    设计原则:遵循开闭原则、体现功能复用
    使用概率:40%
    难度系数:中

    3.适用场景

    1.已经存在的类,它的方法和需求不匹配时(方法结果相同或相似)
    2.不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品,不同厂家造成功能类似而接口不相同情况下的解决方案

    4.使用步骤

    1.需要4个角色,被适配者,适配者,目标接口,目标接口的实现类(这个实现类可以有也可以没有,看具体业务)
    2.目的就是让适配者通过他的一顿操作,达到融合被适配者和目标接口到一个类中

    5.举个栗子

    我们用具体的代码去更好的理解这个设计模式

    5.1栗子说明

    • 背景:把220V的电压通过手机充电器转换成5V的电压给手机进行充电
    • 目的:通过适配器模式去进行一个转换

    5.2使用步骤

    实现代码如下:
    步骤1.创建被适配者(220V的电压类)

    public class AC220 {
        public int outputAC220V(){
            int output = 220;
            System.out.println("输出交流电"+output+"V");
            return output;
        }
    }
    

    步骤2.创建目标接口(DC5)

    public interface DC5 {
        int outputDC5V();
    }
    

    步骤3.创建适配器(PowerAdapter)

    public class PowerAdapter implements DC5 {
    
        private AC220 ac220=new AC220();
    
        @Override
        public int outputDC5V() {
            int adapterInput = ac220.outputAC220V();
    
            //模拟变压器
            int adapterOutput = adapterInput/44;
    
            System.out.println("使用PowerAdapter输入AC:"+adapterInput+"V"+"输出DC:"+adapterOutput+"V");
            return adapterOutput;
        }
    }
    

    步骤4. 测试

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

    6.优点

    • 能提高类的透明性和复用,现有的类复用但不需要改变
    • 目标类和适配器类解耦,提高程序扩展性
    • 符合开闭原则

    7.缺点

    • 适配器编写过程要全面考虑,可能会增加系统的复杂性
    • 增加系统代码可读的难度

    8.总结

    本文只是对适配器模式进行一个分享,接下来会从创建型模式,结构型模式,行为型模式,这三大类展开一个系列分享,大家可以持续进行关注,信仰年輕的设计模式,蟹蟹啦。

    相关文章

      网友评论

          本文标题:设计模式(九)-- 适配器模式

          本文链接:https://www.haomeiwen.com/subject/uefkcqtx.html