python设计模式--适配器模式

内容:在不改动源代码的情况下,将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。

两种实现方式:

类适配器:使用多继承

对象适配器:使用组合

适用场景:

想使用一个已经存在的类,而它的接口不符合你的要求

角色:

目标接口(ApplePay)

待适配的类

适配器(PaymentAdapter)

from abc import ABCMeta,abstractmethod

'''
采取中间类,继承抽象类,把所需要适配的类,在抽象方法里进行使用
'''

#目标接口
class Payment(metaclass=ABCMeta):
    # abstract class
    @abstractmethod
    def pay(self,money):
        pass

class Alipay(Payment):
    def pay(self,money):
        print('支付宝支付%d元。' % money)


class WechatPay(Payment):
    def pay(self, money):
        print('微信支付%d元。' % money)

#待适配的类
class BankPay:
    def cost(self, money):
        print('银联支付%d元。' % money)

class ApplePay:
    def cost(self,money):
        print('苹果支付%d元。' % money)

#适配器
#   类适配器(使用多继承)
class NewBankPay(Payment,BankPay):
    def pay(self,money):
        self.cost(money)

p = NewBankPay()
p.pay(100)


#   对象适配器(使用组合)
class PaymentAdapter(Payment):
    def __init__(self,payment):
        self.payment = payment

    def pay(self,money):
        self.payment.cost(money)

p = PaymentAdapter(BankPay())
p.pay(100)
posted @ 2021-04-01 23:36  MrSatan  阅读(111)  评论(0编辑  收藏  举报