• 适配器模式


    适配器模式

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

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

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

    适配器分两种,类适配器和对象适配器。类适配器是把适配的类的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.有更好的扩展性

    缺点

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

  • 相关阅读:
    Python----定义
    [转载]Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
    彻底明白IP地址——计算相关地址
    [转载] 教你如何迅速秒杀掉:99%的海量数据处理面试题
    [转载]从B 树、B+ 树、B* 树谈到R 树
    [转载]Java抽象类和接口的学习
    [转载]字符串匹配的Boyer-Moore算法
    [转载]字符串匹配的KMP算法
    [转载]孤儿进程与僵尸进程[总结]
    [转载]Huffman编码压缩算法
  • 原文地址:https://www.cnblogs.com/tp123/p/6493059.html
Copyright © 2020-2023  润新知