标签:creat money self 模式 工厂 payment 设计模式 class def
from abc import ABCMeta, abstractclassmethod
# 接口
class Pay(metaclass=ABCMeta):
@abstractclassmethod
def pay(self, money):
pass
# 称Alipay实现了pay接口
class AliPay(Pay):
def __init__(self, huabei=False):
self.huabei = huabei
def pay(self, money):
if not self.huabei:
print("支付余额支付%d" % money)
else:
print("支付宝花呗支付%d" % money)
class WechatPay(Pay):
def pay(self, money):
print("微信支付%d" %money)
class BankPay(Pay):
def pay(self, money):
print('银行卡支付%d' % money)
# 定义一个创建支付对象的接口(一个工厂,约束具体工厂的实现)
class PaymentFacatory(metaclass=ABCMeta):
@abstractclassmethod
def creat_payment(self):
pass
class Alipayment(PaymentFacatory):
def creat_payment(self):
return AliPay()
class AlipayYuEment(PaymentFacatory):
def creat_payment(self):
return AliPay(huabei=True)
class WechatPayment(PaymentFacatory):
def creat_payment(self):
return WechatPay()
class BankPayment(PaymentFacatory):
def creat_payment(self):
return BankPay()
WechatPayment().creat_payment()
优点:
每个具体产品都对应有一个具体工厂类,不需要修改工厂类代码
隐藏了对象创建的具体实现细节
缺点:
每增加一个具体产品类,就必须增加一个相应的具体工厂类
标签:creat,money,self,模式,工厂,payment,设计模式,class,def 来源: https://www.cnblogs.com/kxtomato/p/16438436.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。