一、在講工廠模式以前先經過兩種方法來實現一個接口微信
#接口實現的兩種方法 class Payment: def pay(self,money): # 在子類調用pay方法時拋出異常,限定子類若是調用此方法則必須先實現此方法 raise NotImplementedError class Alipay(Payment): def pay(self,money): print('使用阿里支付了%s'%money) from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): @abstractmethod def pay(self,money): # 經過系統提供的方法來實現若是子類調用此方法,則必須先是實現此方法才能調用 pass class Alipay(Payment): def pay(self,money): print('使用阿里支付了%s'%money)
二、工廠模式的實現app
from abc import abstractmethod,ABCMeta class Payment(metaclass=ABCMeta):
#接口類,提供支付方法 @abstractmethod def pay(self,money): raise NotImplementedError class Alipayment(Payment):
#實現接口類,必須實現接口的pay方法 def pay(self,money): print('阿里支付了%s元'%money) class Applepayment(Payment): def pay(self,money): print('蘋果支付了%s元'%money) class Wechatpaymet(Payment): def pay(self,money): print('微信支付了%s元'%money) class Factory: #工廠類,隱藏了對象的建立細節 @classmethod def create_payment(self,args): if args == 'ali': return Alipayment() elif args == 'apple': return Applepayment() elif args == 'wechat': return Wechatpaymet() else: raise NameError(args) payment = Factory.create_payment('ali') payment.pay(50)