设计模式(Python语言)----适配器模式(Python常用设计模式)

网友投稿 269 2022-08-23


设计模式(Python语言)----适配器模式(Python常用设计模式)

更多信息请参考 【设计模式】

适配器模式内容

将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

适配器模式实现方式

类适配器:使用多继承对象适配器:使用组合

适配器模式中的角色

目标接口(Target)待适配的类(Adaptee)适配器(Adapter)

适配器模式使用场景

想使用一个已经存在的类,而它的接口不符合你的要求想使用一些已经存在的子类,但不可能对每一个都进行子类化以匹配它们的接口,对象适配器可以适配它的父类接口

适配器模式实例

(1)类适配器,即使用多继承的实例

from abc import ABCMeta,abstractmethodclass Payment(metaclass=ABCMeta): @abstractmethod def pay(self,money): passclass Alipay(Payment): def pay(self,money): print(f"pay {money} in alipay way...")class WechatPay(Payment): def pay(self,money): print(f"pay {money} in wechat way...")class BankPay(object): def cost(self,money): print(f"pay {money} in bankpay way...")class NewBankPay(Payment,BankPay): def pay(self,money): self.cost(money)if __name__=="__main__": p=Alipay() p.pay(100) p2 = NewBankPay() p2.pay(100)

执行结果如下:

pay 100 in alipay way...pay 100 in bankpay way...

(2)对象适配器,使用组合

from abc import ABCMeta,abstractmethodclass Payment(metaclass=ABCMeta): @abstractmethod def pay(self,money): passclass Alipay(Payment): def pay(self,money): print(f"pay {money} in alipay way...")class WechatPay(Payment): def pay(self,money): print(f"pay {money} in wechat way...")class BankPay(object): def cost(self,money): print(f"pay {money} in bankpay way...")class PaymentAdapter(Payment): def __init__(self,payment): self.payment=payment def pay(self,money): self.payment.cost(money)if __name__=="__main__": p=Alipay() p.pay(100) p2 = PaymentAdapter(BankPay()) p2.pay(100)

执行结果如下:

pay 100 in alipay way...pay 100 in bankpay way...


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:设计模式(Python语言)----外观模式(设计模式Python)
下一篇:Spring Cloud Eureka 搭建 & 集群方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~