

# -*- encoding: utf-8 -*-
"""
@File : factory.py
@Time : 2021-10-20 22:25
@Author : XD
@Email : gudianpai@qq.com
@Software: PyCharm
"""
# -*- encoding: utf-8 -*-
"""
@File : interface.py
@Time : 2021-10-20 10:20
@Author : XD
@Email : gudianpai@qq.com
@Software: PyCharm
"""
#一个类如果有抽象方法,就属于抽象类
from abc import ABCMeta, abstractmethod
class Payment(metaclass = ABCMeta):
@abstractmethod
def pay(self, money):
pass
class AliPay(Payment):
def __init__(self, use_hb = False):
self.use_hb = use_hb
def pay(self, money):
if self.use_hb:
print("花呗支付{}".format(money))
else:
print("支付宝支付{}元".format(money))
class WechatPay(Payment):
def pay(self, money):
print("微信支付{}".format(money))
class BankPay(Payment):
def pay(self, money):
print("银行卡支付{}".format(money))
class PaymentFactory(metaclass = ABCMeta):
@abstractmethod
def create_payment(self):
pass
class AlipayFactory(PaymentFactory):
def create_payment(self):
return AliPay()
class WechatPayFactory(PaymentFactory):
def create_payment(self):
return WechatPay()
class HuabeiFactory(PaymentFactory):
def create_payment(self):
return AliPay(use_hb = True)
class BankFactory(PaymentFactory):
def create_payment(self):
return BankPay()
pf = HuabeiFactory()
p = pf.create_payment()
p.pay(100)
本文介绍了Python中使用抽象基类(ABC)实现支付接口`Payment`,包括`AliPay`、`WechatPay`和`BankPay`等支付方式。同时,通过工厂模式创建支付对象,如`AlipayFactory`、`WechatPayFactory`等,展示了如何根据需求动态选择支付类。示例代码展示了如何使用`HuabeiFactory`创建花呗支付对象并进行支付操作。
9523

被折叠的 条评论
为什么被折叠?



