设计模式之工厂模式

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)

 

posted on 2018-04-30 20:55  邓国神韵  阅读(183)  评论(0编辑  收藏  举报

导航