适配器模式
from abc import ABCMeta, abstractmethod
class Payment(metaclass=ABCMeta):
@abstractmethod
def pay(self, money):
raise NotImplementedError
class AliPay(Payment):
def pay(self, money):
print('阿里支付%d' % money)
class WechatPay(Payment):
def pay(self, money):
print('微信支付%d' % money)
# 不接口规范, cost --> pay
class BankPay(object):
def cost(self, money):
print('银行卡支付%d' % money)
# 类适配器
class NewBankPay(Payment, BankPay):
def pay(self, money):
self.cost(money)
p = NewBankPay()
p.pay(1000)
# 对象适配器,通过组合完成
class PaymentAdapter(Payment):
def __init__(self, payment):
self.payment = payment
def pay(self, money):
self.payment.cost(money)
p1 = PaymentAdapter(BankPay())
p1.pay(2000)
Last updated