1、在讲工厂模式之前先通过两种方法来实现一个接口
#接口实现的两种方法 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)
2、工厂模式的实现
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)
原文:https://www.cnblogs.com/aadmina/p/8974652.html