一、定义
将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
二、两种实现方式:
1.类适配器:使用多继承
示例:
# A系统支付用pay方法
class Alipay(object):
def pay(self, money):
print('alipay Payment: %d' % money)
# B系统支付用cost方法
class BankPay(object):
def cost(self, money):
print("pay: %d" % money)
# 适配器
class NewBankPay(Alipay, BankPay):
def pay(self, money):
self.cost(money)
if __name__ == '__main__':
bay = NewBankPay()
bay.pay(12)
2.对象适配器:使用组合
from abc import ABCMeta, abstractmethod
# 抽象类、抽象方法、必须实现
class Payment(metaclass=ABCMeta):
@abstractmethod
def pay(self, money):
pass
# A系统支付用pay方法
class Alipay(object):
def pay(self, money):
print('alipay Payment: %d' % money)
# B系统支付用cost方法
class BankPay:
def cost(self, money):
print("pay: %d" % money)
# C系统支付用cost方法
class ApplePay():
def cost(self, money):
print("cost %d" % money)
class PaymentAdapter(Payment):
def __init__(self, payment):
self.payment = payment
def pay(self, money):
self.payment.cost(money)
if __name__ == '__main__':
bay = PaymentAdapter(payment=BankPay())
bay.pay(12)
三、角色
1、目标接口 (Target)
2、待适配的类 (Adaptee)
3、适配器 (Adapter)
四、适用场景
1.想使用一个已经存在的类,而它的接口不符合你的要求
2.想使用一些已经存在的子类,但不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口