• 结构型模式之适配器模式


     
    一.定义
      适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
      
    二、模式结构成员构成

    • Target:目标抽象类
    • Adapter:适配器类
    • Adaptee:适配者类
    • Client:客户类

     
    三.代码示例
     1 /**
     2  * Target
     3  * 目标抽象类
     4  */
     5 public interface FiveVolt {
     6     public int getVolt5();
     7 }
     8 
     9 /**
    10  * Adaptee
    11  * 适配者类
    12  */
    13 public class Volt220 {
    14     public int getVolt220() {
    15         return 220;
    16     }
    17 }
    18 
    19 /**
    20  * Adapter(1)
    21  * 类适配器
    22  */
    23 public class VoltClassAdapter extends Volt220 implements FiveVolt {
    24     @Override
    25     public int getVolt5() {
    26         return 5;
    27     }
    28 }
    29 
    30 /**
    31  * Adapter(2)
    32  * 对象适配器
    33  */
    34 public class VoltObjectAdapter implements FiveVolt {
    35     Volt220 volt220;
    36 
    37     public VoltObjectAdapter(Volt220 volt220) {
    38         this.volt220 = volt220;
    39     }
    40 
    41     @Override
    42     public int getVolt5() {
    43         return 5;
    44     }
    45 
    46     public int getVolt220() {
    47         return volt220.getVolt220();
    48     }
    49 }
    View Code
     
    四.优点和缺点分析
    优点:
    >将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码。完全符合“开闭原则”。

    缺点:
    >增加程序实现过程的复杂度
     
    五.应用场景

    在以下情况下可以使用适配器模式:

    >系统需要使用现有的类,而这些类的接口不符合系统的需要。

    >想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。

  • 相关阅读:
    人月神话阅读笔记03(完)
    人月神话阅读笔记02
    各种前端好用的在线工具、学习网站、插件
    垂直居中css
    输入框判断表情的输入js
    jq九宫格抽奖
    移动端中一像素的解决方案
    获取url地址栏中的参数数据
    ios中getTime()的兼容性问题
    清除Css中select的下拉箭头样式
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/9216131.html
Copyright © 2020-2023  润新知