当前位置: 首页 > wzjs >正文

桂林两江四湖象山景区讲解导游词郑州seo排名工具

桂林两江四湖象山景区讲解导游词,郑州seo排名工具,开发一套网站系统 多少钱,做产品网站建设定义 适配器模式(Adapter Pattern)是一种结构型设计模式,它用于将一个类的接口转换为客户端所期待的另一个接口。 注:在适配器模式定义中所提及的接口是指广义的接口,它可以表示一个方法或者一组方法的集合。 结构 …

定义

适配器模式(Adapter Pattern)是一种结构型设计模式,它用于将一个类的接口转换为客户端所期待的另一个接口。
注:在适配器模式定义中所提及的接口是指广义的接口,它可以表示一个方法或者一组方法的集合。

结构

适配器模式可分为对象适配器模式和类适配器模式两种。在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承关系。

对象适配器模式:
在这里插入图片描述

类适配器模式:
在这里插入图片描述

  • 目标抽象类(Target): 客户端希望使用的抽象类。
  • 适配者类(Adaptee): 需要适配的具体类。
  • 适配器类(Adapter): 作为一个转换器,对Adaptee和Target进行适配。

应用场景

  1. 复用现有代码:当你有现有的第三方库或遗留代码,这些代码与新的系统接口不兼容时,使用适配器模式可以使它们能够共同工作,而无需修改现有的代码。例如,旧的数据库访问类或旧的消息队列系统,通过适配器模式将它们与新的系统进行兼容。
  2. 多种外部系统对接:在系统需要与多个外部系统进行对接时,不同的外部系统可能会有不同的接口和协议。适配器模式可以帮助将这些不同的接口转换为统一的接口,从而简化集成工作。比如,可以将不同支付网关(如支付宝、微信支付、PayPal等)整合到统一的支付接口中,或将不同操作系统上的图像处理库通过适配器封装为统一接口。
  3. 当系统或接口升级时,新接口可能与旧系统不兼容。适配器模式可以将新接口转换为旧接口的形式,确保旧系统正常运行,无需大规模修改代码。例如,第三方API更新时,适配器可以将新接口转化为旧的调用方式,从而保持兼容性。

优缺点

优点:

  1. 解耦:适配器模式使得客户端和具体的实现类解耦。客户端只与适配器交互,而不直接依赖于具体的类实现,这样客户端无需关心具体实现的细节。
  2. 代码复用性高:通过使用适配器,可以将旧的或第三方的代码与新的系统无缝对接,避免重复开发。
  3. 易于扩展:通过引入新的适配器类,可以快速支持新的接口或协议,而不需要修改现有的代码。

缺点:

  1. 增加系统复杂性:适配器模式通过引入额外的适配器类来实现接口转换,这会使系统的结构更加复杂。在需要多个适配器时,会增加类的数量和相互关系,特别是当适配器层次过多时,可能会导致系统的维护变得更加困难。

代码示例

对象适配器模式

# 目标抽象类
class Payment:def pay(self, amount):pass# 支付宝支付类
class Alipay:def alipay_payment(self, amount):print(f"支付{amount}元,通过支付宝完成支付。")# 微信支付类
class WeChatPay:def wechat_payment(self, amount):print(f"支付{amount}元,通过微信支付完成支付。")# 支付宝适配器类
class AlipayAdapter(Payment):def __init__(self):self.alipay = Alipay()def pay(self, amount):self.alipay.alipay_payment(amount)# 微信支付适配器类
class WeChatPayAdapter(Payment):def __init__(self):self.wechat_pay = WeChatPay()def pay(self, amount):self.wechat_pay.wechat_payment(amount)# 客户端通过适配器来选择支付方式
alipay_adapter = AlipayAdapter()
wechat_adapter = WeChatPayAdapter()alipay_adapter.pay(100)  # 支付100元,通过支付宝
wechat_adapter.pay(200)  # 支付200元,通过微信支付

类适配器模式

# 支付宝适配器类(类适配器)
class AlipayAdapter(Alipay, Payment):def pay(self, amount):# 调用Alipay类的支付方法self.alipay_payment(amount)# 微信支付适配器类(类适配器)
class WeChatPayAdapter(WeChatPay, Payment):def pay(self, amount):# 调用WeChatPay类的支付方法self.wechat_payment(amount)# 客户端通过适配器来选择支付方式
alipay_adapter = AlipayAdapter()
wechat_adapter = WeChatPayAdapter()alipay_adapter.pay(100)  # 支付100元,通过支付宝
wechat_adapter.pay(200)  # 支付200元,通过微信支付

对象适配器模式和类适配器模式的比较

  1. 在类适配器模式中,由于适配器类是适配者类的子类,因此可以在适配器类中重写一些适配者的方法,使得适配器的灵活性更强。而在对象适配器模式中,适配器通过组合适配者类实现功能,要修改适配者的方法则需要通过委托和包装,操作上相对复杂。
  2. 在对象适配器模式中,一个对象适配器可以把多个不同的适配者适配到同一个目标。而在类适配器模式中,虽然可以通过继承多个适配者来实现,但这样会使类结构变得更加复杂,难以维护。
  3. 对象适配器模式 更适合需要高灵活性、能够适配多个不同对象或者无需修改适配者的场景。类适配器模式 适用于适配单一适配者并且对性能和实现简单性有较高要求的场景。

参考

《设计模式的艺术》

http://www.dtcms.com/wzjs/30275.html

相关文章:

  • 衡水龙华的网站建设互联网营销师证书含金量
  • 一流的赣州网站建设种子搜索在线 引擎
  • 镇江建网站广东做seo的公司
  • 静态网站说明书股票指数是什么意思
  • 网站后台删除二级栏目深圳网络推广案例
  • 网站ie8兼容性seo优化与品牌官网定制
  • 建设网站流程网络精准营销推广
  • wordpress使用webp格式图片seo怎么去优化
  • 福建省建设厅网站施工员查询微信管理
  • 网站建设哪家好公司网络营销方案策划案例
  • 如何推进网站建设百度网站怎么优化排名靠前
  • 廊坊网站建设费用百度指数代表什么
  • 如何做建材网站的线下推广福州seo网络推广
  • 网站设计书爱网站关键词挖掘
  • wordpress theme 修改seo优化推广业务员招聘
  • 电商网站的在线客服怎么做百度推广电话销售好做吗
  • 鲜花网站建设规划免费b站推广入口2023
  • 房产网站开发文档网站设计制作哪家好
  • 上海电信网站备案百度空间登录入口
  • 微信官网电脑版下载北京seo公司工作
  • 用django怎么做网站今天的新闻发布会
  • 汽车之家网站百度宣传广告要多少钱
  • 去哪个网站可以接单做ps等等百度经验官网首页
  • 网络平台推广运营培训沧州网站推广优化
  • 关于做好学院网站建设的要求aso100官网
  • 石家庄市网站建设适合女生去的培训机构
  • wordpress锚文本泉州百度推广排名优化
  • 包图网登录入口优化关键词怎么做
  • 江阴住房和城乡建设局网站sem数据分析
  • 营销型网站建设怎么做体验式营销经典案例