zoukankan      html  css  js  c++  java
  • 适配器模式

    适配器模式

    适配器模式可以把一个类的接口变换成客户端所期待的另一种接口,使得原本因接口不匹配而无法一起工作的两个类可以一起工作。

    适配器模式的用途,在网上找了一幅图,挺形象的:

    比方说我有一个台灯,其插头是标准的两相的交流电插头,即阳极、阴极。我旅游到了一个地方想用自己的台灯,但发现旅馆里面只有三相的插头,即在阳极、阴极的基础上还多了一个地级。这时候怎么办呢,一个两相到三相的转换器(适配器)就能解决这个问题了,而这正是本模式所做的事情。

    适配器分两种,类适配器和对象适配器。类适配器是把适配的类的api转换成目标类的api,涉及的角色:

    1.目标角色

    希望得到的接口

    2.源角色

    需要适配的接口

    3.适配器角色

    模式的核心,适配器把原借款转换为目标接口

    类适配器实例

    目标接口

    1 public interface ClassTarget {
    2     public void sampleOperation1();
    3     
    4     public void sampleOperation2();
    5 }

    源角色

    1 public class ClassAdaptee
    2 {
    3     public void sampleOperation1(){}
    4 }

    适配器角色

    1 public class ClassAdapter extends ClassAdaptee implements ClassTarget
    2 {
    3     public void sampleOperation2()
    4     {
    5         // 相关代码
    6     }    
    7 }

    对象适配器实例

    目标接口

    1 public interface ObjectTarget
    2 {
    3     public void sampleOperation1();
    4     
    5     public void sampleOperation2();
    6 }

    源角色

    1 public class ObjectAdaptee
    2 {
    3     public void sampleOperation1(){}
    4 }

    对象适配器采用了委派关系将源角色和适配器角色关联

     1 public class ObjectAdapter
     2 {
     3     private ObjectAdaptee objectAdaptee;
     4     
     5     public ObjectAdapter(ObjectAdaptee objectAdaptee)
     6     {
     7         this.objectAdaptee = objectAdaptee;
     8     }
     9     
    10     public void sampleOperation1()
    11     {
    12         this.objectAdaptee.sampleOperation1();
    13     }
    14     
    15     public void sampleOperation2(){}
    16 }

    适配器的核心就是把一个类的接口转换成客户端期待的另一种接口。

    适配器模式的优缺点

    优点

    1.有更好的复用性

    2.有更好的扩展性

    缺点

    过多使用适配器会使系统凌乱,因此除非必要,不推荐使用适配器,而是直接对系统重构。 

  • 相关阅读:
    JS制作蔡徐坤打篮球小游戏(鸡你太美?)
    2019-泰迪杯c题数据处理,WGS-84(世界标准地理坐标系) 转为 BD-09(百度地理坐标系)
    浅谈指令系统---(汇编语言)
    PyGame实现情人节表白利器
    Python-王者荣耀自动刷金币+爬取英雄信息+图片
    SSM-网站前台博客系统制作(2)---完善版Google的Kaptcha
    UML 用例之间的关系
    在配置文件web.xml中配置Struts2的启动信息
    IO异常处理
    设计监听器
  • 原文地址:https://www.cnblogs.com/tp123/p/6493059.html
Copyright © 2011-2022 走看看