适配器模式

适配器模式

  • 角色

    1. 目标接口
    2. 带适配的类
    3. 适配器
  • 使用场景

    1. 想使用一个已经存在的类,而他的接口不符合你的要求
    2. (对象适配器)想使用进行存在的子类,但不能对每一个都进行子类化以匹配他们的接口。对象适配器可以适配他的父类接口
  • 内容

    将一个类的接口转换为客户希望的另一个接口,适配器模式使得原来由于接口不兼容而不能再一起工作的类可以一起工作

  • 实现方法

    1. 类适配器:

      多继承

      from abc import ABCMeta,abstractstaticmethod
      
      
      class Pay(metaclass=ABCMeta):
      	@abstractstaticmethod
      	def pay(self):
      		pass
      
      
      class AliPay(Pay):
      	"""docstring for AliPay"""
      	def pay(self,money):
      		print("使用支付宝余额支付{}".format(money))
      
      
      class BankPay(object):
      	"""docstring for BankPay"""
      	def const(self,money):
      		print("使用银行卡支付{}".format(money))
      
      
      
      # 使用适配器模式
      # 使用多继承实现适配器
      class  NewBankPay(AliPay,BankPay):
      	"""docstring for  NewBankPay"""
      	def pay(self,money):
      		self.const(money)
      
      
      new = NewBankPay()
      new.pay(10000)
      
    2. 对象适配器

      使用组合

      class Pay(metaclass=ABCMeta):
      	@abstractstaticmethod
      	def pay(self):
      		pass
      
      
      class AliPay(Pay):
      	"""docstring for AliPay"""
      	def pay(self,money):
      		print("使用支付宝余额支付{}".format(money))
      class AppPay(object):
      	"""docstring for AppPay"""
      	def const(self,moneoy):
      		print('使用app支付了{}'.format(moneoy))
      
      
      class ApplyAndPay(AppPay,Pay):
      	"""docstring for ApplyAndPay"""
      	def __init__(self, payment):
      		self.payment = payment
      
      	def pay(self,money):
      		self.payment.const(money)
      
      app = ApplyAndPay(AppPay())
      app.pay(123123)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值