zoukankan      html  css  js  c++  java
  • 设计模式之工厂模式

    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)
  • 相关阅读:
    Tensorflow卷积接口总结
    《MuseGAN: Multi-track Sequential Generative Adversarial Networks for Symbolic Music Generation and Accompaniment》论文阅读笔记
    核函数
    KCF跟踪算法
    岭回归、lasso
    C++的命令行参数(gflag)
    Python的命令行参数(argparse)
    size_t为什么重要
    linux下caffe的命令运行脚本
    卡尔曼滤波
  • 原文地址:https://www.cnblogs.com/aadmina/p/8974652.html
Copyright © 2011-2022 走看看