设计模式之适配器模式

154 阅读3分钟

「这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战」。

介绍

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

适配器模式的优缺点

适配器模式的主要优点如下。

  • 客户端通过适配器可以透明地调用目标接口。
  • 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。
  • 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。
  • 在很多业务场景中符合开闭原则。

适配器模式的缺点是:

  • 适配器编写过程需要结合业务场景全面考虑,可能会增加系统的复杂性。
  • 增加代码阅读难度,降低代码可读性,过多使用适配器会使系统代码变得凌乱。

适配者模式的结构

适配器模式(Adapter)包含以下主要角色。

  1. 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。
  2. 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。
  3. 适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。

适配器模式的实现

类适配器

class Adapter : Adaptee, Target
{
    public void Request()
    {
        base.SpecificRequest();
    }
}

对象适配器

class Adapter : Target
{
    private Adaptee adaptee; //维持一个对适配者对象的引用
    
    public Adapter(Adaptee adaptee)
    {
        this.adaptee = adaptee;
    }
    
    public void Request()
    {
        adaptee.SpecificRequest();//转发调用
    }
}

适合的场景

​ 在以下情况下可以考虑使用适配者模式:

1、系统需要使用一些现有的类,而这些现有的类不符合系统的需要,比如名字,比如方法设置冲突。

2、想创建一个可以重复使用的类,用于和一些彼此之间没有太大关联的类,包括第三方类。要一起工作!

总结

​ 适配者类的概念关键就是将两个不太兼容的集成到适配者类中,然后客户通过适配器类能够调用目标类和适配者类两个的方法。就相当于一个并集!在以后进行开发时可以找类似可以使用这种设计模式的地方,提高代码的可重用性,和灵活性!