zoukankan      html  css  js  c++  java
  • 七、结构模式之-适配器模式

    适配器模式是一种结构模式。所谓结构模式是指将类或者对象结合在一起形成更大的结构。结构模式又分为类的结构模式和对象的结构模式。类的结构模式就是通过使用继承

    类和接口等结合在一起,已形成更大的结构。当一个类从父类继承并实现接口时,这个新的类就把父类的结构和接口的结构结合起来了。类的结构模式是静态的(就是由开始的继承结构决定了结构模式的结构)。一个类的结构模式的典型例子就是类形式的适配器模式对象的结构模式是指把不同类型的对象组合在一起,以实现新的功能的方法。对象的结构模式是动态的(即包含的对象多是基类型的对象,可以传递各种派生类对象进去)。对象的结构模式的例子为:代理模式、合成模式、享元模式、装饰模式、和对象形式的适配器模式等。

    什么是适配器模式

    适配器是把一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而无法再一起工作的两个类可以在一起工作。在软件开发中,如果系统的数据和行为都是正确的,但是接口不符合时,就应该考虑使用适配器模式(而不是直接copy paste 代码),以使得控制范围之外(如果是你自己的,业务直接改代码就ok了,虽然从开闭原则不推荐)的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现有的类,而接口又与需要的接口不一致的情况

    适配器模式的两种形式

      适配器模式有两种形式,即类的适配器模式和对象的适配器模式。如下图,左侧为类的适配器模式,右侧为对象的适配器模式

    image

    类的适配器模式

      该方式是通过从客户端期望接口和现有类派生,以使得派生的类满足期望。(C++的方式就是多重继承,Java的话可以通过从现有类派生并implements 目标接口)

    对象的适配器模式

      对象的适配器模式对于现有类不再是派生,而是通过组合的方式。 示例代码如下:

       1: class Target {
       2:   public:
       3:     virtual void FuncA() = 0;
       4: };
       5:  
       6: class Adaptee {
       7:   public:
       8:      void FuncB() { ...} // 该函数提供了FuncA需要的功能
       9: };
      10:  
      11: class Adapter : public Target {
      12:   public:
      13:     virtual void FuncA() { // 目标接口
      14:        m_adaptee.FuncB();  // 使用adaptee的函数提供
      15:     }
      16:   private:
      17:     Adaptee m_adaptee;
      18: };
  • 相关阅读:
    微信打开网址添加在浏览器中打开提示遮罩
    Java内存分配之堆、栈和常量池
    腾讯面试题04.进程和线程的区别?
    cookie 和 session的区别
    jvm内存模型-回收算法-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东面试题)
    HTTP中GET与POST的区别
    Socket send函数和recv函数详解
    JSP九大内置对象及四个作用域
    JavaScript
    网页布局(html+css基础)
  • 原文地址:https://www.cnblogs.com/lovemdx/p/3305946.html
Copyright © 2011-2022 走看看