结构型模式
--- 适配器模式 ---
内容:
将一个类的接口转换成客户希望的另一个接口
使原本由于接口不兼容而不能一起工作的那些类,可以一起工作
实现方式:
1. 类适配器:使用多继承
2. 对象适配器:使用组合 (在一个类里放入另一个类的对象)
角色:
1. 目标接口 (Target)
2. 待适配的类 (Adaptee)
3. 适配器 (Adapter)
适用场景:
1. 想使用一个已经存在的类,而它的接口不符合你的要求
2. (对象适配器) 想使用一些已经存在的子类,但不可能对每一个都
进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口
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 UnionPay:
def cost(self, money):
print(f'银行卡支付 {money} 元!')
class ApplePay:
def cost(self, money):
print(f'苹果支付 {money} 元!')
# 类适配器
# class NewUnionPay(Payment, UnionPay):
# def pay(self, money):
# self.cost(money)
# 对象适配器
class PaymentAdapter(Payment):
def __init__(self, payment):
self.payment = payment
def pay(self, money):
self.payment.cost(money)
p = PaymentAdapter(ApplePay()) # 传入一个 payment 对象
p.pay(100)