# -*- 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)