ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

设计模式——适配器模式

2021-09-30 23:03:31  阅读:127  来源: 互联网

标签:int 适配 适配器 Volate220V 模式 VoltageAdapter 设计模式 public


适配器模式本质是为了解决 对接另外一个接口时,发现两边的数据格式或者一些原因导致不能直接对接;这是很正常的现象;当为了实现低耦合即尽量不要修改大量代码去适配对接接口,就应该抽象出一层适配层,即适配类来完成两边的对接工作。

适配器模式分为两种

  1. 类适配方式,即通过继承来完成
  2. 对象适配方式,即通过代理来完成

都通过 220V电源 向 5V电源 适配的案例来举例

第一种方式--类适配:

220V 电源类
// 220V 电源类
public class Volate220V {
    //输出220v的电压
    public int output220V(){
        int src = 220;
        System.out.println("电压="+src + "伏");
        return src;
    }
}
定义一个输出5V的接口
//适配接口
public interface IVoltage5V {
    public int output5V();
}
适配类
//适配器类
public class VoltageAdapter  extends Volate220V implements IVoltage5V {
    @Override
    public int output5V() {
        //获得到220v电压
        int srcV = output220V();
        int dstV = srcV / 44;//转换成5V
        return dstV;
    }
}
使用
public class Client {
    public static void main(String[] args){
        VoltageAdapter voltageAdapter = new VoltageAdapter();
        voltageAdapter.output5V();
    }
}

第二种方式:对象适配

定义一个适配接口,适配5V电源
//适配接口
public interface IVoltage5V {
    public int output5V();
}
220V电源类
//被适配的类
public class Volate220V {
    //输出220v的电压
    public int output220V(){
        int src = 220;
        System.out.println("电压="+src + "伏");
        return src;
    }
}
适配器类
//适配器类
public class VoltageAdapter implements IVoltage5V {
    
    private Volate220V volate220V;//关联关系-聚合

    //通过构造器,传入一个Volate220V实例
    public VoltageAdapter(Volate220V volate220V) {
        this.volate220V = volate220V;
    }

    @Override
    public int output5V() {
        //获得到220v电压
        int dst = 0;
        if (volate220V != null){
            int srcV =  volate220V.output220V();//获取220v电压
            System.out.println("使用对象适配器,进行适配~");
            dst = srcV / 44;//转换成5V
            System.out.println("适配完成,输出的电压为="+dst);
        }

        return dst;
    }
}
使用
public class Client {
    public static void main(String[] args){
        VoltageAdapter voltageAdapter = new VoltageAdapter(new Volate220V());
        voltageAdapter.output5V();
    }
}

我比较常用第二种,因为聚合优于继承

标签:int,适配,适配器,Volate220V,模式,VoltageAdapter,设计模式,public
来源: https://www.cnblogs.com/gradyblog/p/15358357.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有