适配器(Adapter)模式

简介: 适配器(Adapter)模式

 定义:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作

一. 适配器模式的两种形式:适配器模式有类的适配器模式和对象的适配器模式两种

1. 类的Adapter模式结构图

image.gif编辑

图2 对象的Adapter模式结构图

image.gif编辑

二. 类的Adapter模式的结构

我们还是以汽车类型为例子说明Adapter模式。现在有这样一个场景:假设我们在软件开发中要使用一个不同的汽车工厂实现,该汽车工厂实现有BMW和BYD两种方式,它提供给我们的API接口是Drive()方法,使用方法如下:

car.Drive("BMW!");

当软件系统开发进行到一半时,要生产BYD的模式进行生产时,使用方法如下:

car.Drive("BYD!");

image.gif编辑

这时也许我们会想到修改现在的汽车生产工具的API接口,但是由于版权等原因我们不能够修改它的源代码,此时Adapter模式便可以派上用场了

image.gif编辑

实现代码如下:

public class BMWAdapter:BMWCar,ICarTarget
{
    public void Drive()
    {
        Drive();
    }
}
public class BYDCarAdapter:BYDCar,ICarTarget
{
    public void Drive()
    {
        this.Drive();
    }
}

image.gif

public class App
{
    public static void Main()
    {
        ICarTarget car= new BMWCarAdapter();
        car.Drive("BMW..");
        ICarTarget car= new BYDCarAdapter();
        car.Drive("BYD..");
    }
}

image.gif

三. 对象的Adapter模式的结构

image.gif编辑

实现代码如下:

public class CarAdapter:ICarTarget
{
    private CarAdaptee _adaptee;
    public CarAdapter(CarAdaptee adaptee)
    {
        this._adaptee = adaptee;   
    }
    public void Write()
    {
        _adaptee.Drive();
    }
}

image.gif

与类适配器相比较,可以看到最大的区别是适配器类的数量减少了,不再需要为每一种具体的方式来创建一个适配器类。同时可以看到,引入对象适配器后,适配器类不再依赖于具体的BMWCar类和BYDCar类,更好的实现了松耦合。

再看一下客户端程序的调用方法:

public class App
{
    public static void Main()
    {
        ICarTarget car= new CarAdapter(new BMWCar());
        car.Drive("BMW..");
        ICarTarget  car= new CarAdapter(new BYDCar());
        car.Drive("BYD..");
    }
}

image.gif

文章下方有交流学习区!一起学习进步!也可以前往官网,加入官方微信交流群

创作不易,如果觉得文章不错,可以点赞收藏评论

你的支持和鼓励是我创作的动力❗❗❗

官网Doker 多克官网;官方旗舰店Doker 多克官方旗舰店

目录
相关文章
|
6月前
|
XML 前端开发 Java
24. 【Android教程】适配器 Adapter
24. 【Android教程】适配器 Adapter
132 3
适配器的作用
适配器的作用
178 0
|
Java Android开发
Adroid RecyclerView adapter 封装
Adroid RecyclerView adapter 封装
|
算法 C++
C++函数适配器
C++函数适配器
|
XML SQL 前端开发
Adapter基础讲解
这一节我们要讲的UI控件都是跟Adapter(适配器)打交道的,了解并学会使用Adapter很重要, Adapter是用来帮助填充数据的中间桥梁,简单来说就是:将各种数据以合适的形式显示到view上,提供 给用户看!
460 0
|
API 数据处理 Apache
适配器模式(Adapter)
一 概述 定义:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。
922 0