首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设计模式第五讲-适配器模式

简介

适配器模式 将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间

存在两种适配器: “对象适配器” 和 “类”适配器 (因为大部分语言不支持多重继承,所以此处指的是对象适配器)

y适配器模式包含一下三个角色:

1:Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。在类适配器中,由于java、php语言不支持多重继承,所以它只能是接口。

2:Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配。它是适配器模式的核心。

3:Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类包好了客户希望的业务方法。

图例:

场景设置

系统已经在之前实现了订单服务,在一个类里面实现的(坑爹的万能类),这个代码很复杂你们不想再冒风险去改动,并且有外部相关服务正在持续使用它。

就在这个时候,欠扁的产品给你提了一个需求,要你针对我们的后台改造下某个共用的接口,在这个基础上增加些字段,比如下单人的姓名.

我们用简单的适配器模式实现下

代码实现

Order.php 相当于Adaptee需要适配的类

客户期望实现的接口类

OrderAdepter 适配类(把源接口转换成目标接口)

调用:

output:

具体UML图:

总结

适配器模式比较简单,代码均采用php语言实现。

适配器模式主要应用于希望复用一些现存的类,但是接口要求又与复用环境要求不一致的情况。

两个类所做的事情相同或相似,但是具有不同的业务或接口使用时(比如对后台提供接口,可展示一些敏感电话信息,但对外就需要过滤掉)

使用适配器可最小化的影响旧有的业务系统,来增加新的功能。

通过适配器模式,我们下次可以看看外观模式究竟和有什么区别..

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190115G05QMH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券