适配器模式
概述
- 将一个类的接口转换成需要的另一个接口。适配器模式使的原本由于接口不兼容而不能一起工作的类可以一起工作
对象
- 目标接口(target)
- 待适配的类(Adaptee)
- 适配器(Adapter)
实现方式
适用场景
- 想使用一个已存在的类,他的接口不符合要求
- 想使用一些存在的子类,但不可能对每一个子类化以匹配他们的接口,对象适配器可以适配他的父类接口
例子
from abc import ABCMeta, abstractmethod
class Payment(metaclass=ABCMeta):
@abstractmethod
def pay(self, money):
pass
class Alipay(Payment):
def pay(self, money):
print(f"支付宝支付{money}元")
class WechatPay(Payment):
def pay(self, money):
print(f"微信支付{money}元")
class BankPay:
def cost(self, money):
print(f"银联支付{money}元")
class ApplePay:
def cost(self, money):
print(f"苹果支付{money}元")
class BankPayAdapter(Payment, BankPay):
def pay(self, monay):
self.cost(monay)
class PaymentAdapter(Payment):
def __init__(self, payment):
self.payment = payment
def pay(self, money):
self.payment.cost(money)
p = BankPayAdapter()
p.pay(100)
bankpay = PaymentAdapter(BankPay())
bankpay.pay(100)
applepay = PaymentAdapter(ApplePay())
applepay.pay(100)