简介
适配器模式 将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间
存在两种适配器: “对象适配器” 和 “类”适配器 (因为大部分语言不支持多重继承,所以此处指的是对象适配器)
y适配器模式包含一下三个角色:
1:Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。在类适配器中,由于java、php语言不支持多重继承,所以它只能是接口。
2:Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配。它是适配器模式的核心。
3:Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类包好了客户希望的业务方法。
图例:
场景设置
系统已经在之前实现了订单服务,在一个类里面实现的(坑爹的万能类),这个代码很复杂你们不想再冒风险去改动,并且有外部相关服务正在持续使用它。
就在这个时候,欠扁的产品给你提了一个需求,要你针对我们的后台改造下某个共用的接口,在这个基础上增加些字段,比如下单人的姓名.
我们用简单的适配器模式实现下
代码实现
Order.php 相当于Adaptee需要适配的类
客户期望实现的接口类
OrderAdepter 适配类(把源接口转换成目标接口)
调用:
output:
具体UML图:
总结
适配器模式比较简单,代码均采用php语言实现。
适配器模式主要应用于希望复用一些现存的类,但是接口要求又与复用环境要求不一致的情况。
两个类所做的事情相同或相似,但是具有不同的业务或接口使用时(比如对后台提供接口,可展示一些敏感电话信息,但对外就需要过滤掉)
使用适配器可最小化的影响旧有的业务系统,来增加新的功能。
通过适配器模式,我们下次可以看看外观模式究竟和有什么区别..
领取专属 10元无门槛券
私享最新 技术干货