适配器模式
适配器模式
最近升级wifi芯片,所以有些接口要重新实现,使用宏定义的方式进行了管理,感觉代码臃肿且不方便阅读,在此学习以下适配器模式,后面重构这部分代码。
此次学习参考LoveLion的不兼容结构的协调——适配器模式
概述
适配器模式可以将一个类的接口和另一个类的接口匹配起来,而无须修改原来的适配者接口和抽象目标类接口。定义如下:
适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。
结构
- Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。
- Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,在对象适配器中,它通过继承Target并关联一个Adaptee对象使二者产生联系。
- Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可能没有适配者类的源代码。
实现
这个模式,我认为关键是中间适配层统一接口提供给上层,下层根据不同的平台实现适配层的接口.
个人见解不知道是否正确,下面放上我wifi重构后的结构:
1 |
|
service负责接受请求并返回结果,target抽象了service用到的所有接口,并实现了相同的接口,24g和5g是对应的数据结构,9008和rtl8192继承target根据芯片适配差异化的接口,如果更换芯片就再实现一个实例.
涉及到工作,就不放源代码了
适配器模式
https://carl-5535.github.io/2022/06/09/设计模式/适配器模式/