介绍
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。
适配器模式的优缺点
适配器模式的主要优点如下。
- 客户端通过适配器可以透明地调用目标接口。
- 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。
- 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。
- 在很多业务场景中符合开闭原则。
适配器模式的缺点是:
- 适配器编写过程需要结合业务场景全面考虑,可能会增加系统的复杂性。
- 增加代码阅读难度,降低代码可读性,过多使用适配器会使系统代码变得凌乱。
适配者模式的结构
适配器模式(Adapter)包含以下主要角色。
- 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。
- 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。
- 适配器(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、想创建一个可以重复使用的类,用于和一些彼此之间没有太大关联的类,包括第三方类。要一起工作!
总结
适配者类的概念关键就是将两个不太兼容的集成到适配者类中,然后客户通过适配器类能够调用目标类和适配者类两个的方法。就相当于一个并集!在以后进行开发时可以找类似可以使用这种设计模式的地方,提高代码的可重用性,和灵活性!