zoukankan      html  css  js  c++  java
  • 设计模式学习总结(八)--适配者模式

    定义

    将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。

    比如笔记本的电源(也叫电源适配器)就使用了适配器模式。将220V的交流电转换为笔记本电脑所需要的12V

    适配器模式角色

    适配器模式包含以下三个角色:

    • Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。

    • Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对 Adaptee 和 Target 进行适配。它是适配器模式的核心。

    • Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类包好了客户希望的业务方法。

    适用场景

    • 系统需要使用现有的类,但现有的类却不兼容。

    • 需要建立一个可以重复使用的类,用于一些彼此关系不大的类,并易于扩展,以便于面对将来会出现的类。

    • 需要一个统一的输出接口,但是输入类型却不可预知。

    实例

    以电源适配器为例

    /**
     * 220V 电压对象
     */
    public class AC220 {
    
        public int output220V(){
            return 220;
        }
    }
    /**
     * 5V 电压输出接口
     */
    public interface DC5 {
        int output5V();
    }
    

    适配器对象

    public class PowerAdapter implements DC5 {
    
        private AC220 ac220;
    
        public PowerAdapter(AC220 ac220) {
            this.ac220 = ac220;
        }
    
        @Override
        public int output5V() {
            if (this.ac220 != null) {
                return (ac220.output220V() / 44);
            }
            return 0;
        }
    }
    
    

    调用:

    public static void main(String[] args) {
        PowerAdapter powerAdapter = new PowerAdapter(new AC220());
        System.out.println(powerAdapter.output5V());
    }
    

    控制台输出:

    5
    
  • 相关阅读:
    aspose.word 页脚插入图片图片浮动
    Aspose.Words插入表格,表格居中显示
    git常用命令
    openlayers之矢量加载标记点
    三、反射、动态加载
    openlayers交互之多边形
    openlayers轨迹回放
    openlayers交互之线
    关闭2000的默认共享
    开始blog,有点晚,但还是早
  • 原文地址:https://www.cnblogs.com/markLogZhu/p/11582542.html
Copyright © 2011-2022 走看看