[代码模板]-结构型-适配器-介绍



一、适配器模式介绍



适配器模式(Adapter Design Pattern):适配器是结构型模式,用来将不同规范的类,通过组合的方式对这些类进行统一规范管理。

或者说 

适配器用来将不兼容的接口转变为兼容,组合多个接口不兼容的类,统一提供功能。

适配器有两种通用模式:

1、类适配器

通过继承的方式实现适配

2、对象适配器

通过组合的方式实现适配



二、适配器模板(使用套路)



背景

当前存在多个旧代码类,其中某个类 `Adaptee`,如下:

[代码模板]-结构型-适配器-介绍

针对旧版本代码,当前新版本功能不在直接进行使用,`Adaptee` 不在对外提供操作,这时候通过统一的接口规范进行适配旧代码,达到即使 `Adaptee` 本身不对外开放,但是类的功能,仍然可以访问操作的目的。

2.1、类适配器

实现代码与代码类图如下

[代码模板]-结构型-适配器-介绍

如上图所示,原先的功能调用直接调用 `Adaptee` 旧代码方法即可,现在通过适配的方式重新进行组合,并规范了适配器调用接口 `Target` ,方法的调用通过 `AdapterTarget` 适配器间接调用之前旧代码,功能不变,但是屏蔽了 `Adaptee` 对外的操作权限。

2.2、对象适配

代码实现和类图如下

同样通过适配,在外层存在有统一规范的适配器接口 `Target`,然后通过调用适配器 `AdapterTarget` ,间接调用旧代码 `Adaptee` 从而达到直接调用新接口规范 `Target` 即可适配旧代码 `Adaptee` 的实现。



三、总结



适配器模板套路

1、定义新的组合规范,如:`Target` 接口。

2、通过实现 `Target` 生成一个适配器 `AdapterTarget` 

3、`AdapterTarget` 适配器通过继承,或者组合受适配的对象 `Adaptee` ,用户在调用 适配器`AdapterTarget` 的新方法时,调用的其实是被继承或者组合进来的 `Adaptee` 对象。

在使用中要如何选择,“对象适配” or “类适配” ?

适配主要是为了通过新的规范重新组合一个或者多个 `Adaptee`(需要被适配的旧代码) 来完成新的功能组合。

`Adaptee` 被适配的旧代码本身可能实现有自身接口规范,

1、如果旧代码 `Adaptee` 自身实现的接口少,或者没有,那么使用 类适配器或者对象适配器都可以

2、如果旧代码 `Adaptee` 实现的接口多,且接口和我们需要定义的接口规范 `Target` 相似,可以直接使用 类适配器,通过继承的方式复用接口规范。


3、如果旧代码 `Adaptee` 实现的接口多,但是接口的定义和我们需要定义的规范 `Target` 不一样,或者大部分不同,这时候推荐使用 对象适配器,通过组合的方式来进行调用。

End

来源:花好夜猿,本文观点不代表自营销立场,网址:https://www.zyxiao.com/p/77104

发表评论

电子邮件地址不会被公开。 必填项已用*标注

侵权联系
分享本页
返回顶部