工厂模式

Posted 小仙女~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工厂模式相关的知识,希望对你有一定的参考价值。

工厂模式

  • 定义:不直接向客户暴露对象创建实现的细节,而是通过一个工厂类来负责创建产品类的实例
  • 角色:抽象产品角色,具体产品角色,工厂角色
  • 使用场景:工厂模式是创建型模式,它的作用是创建对象
  • 优点:隐藏了对象创建产品的细节,客户段不需要修改代码
  • 缺点:违反了单一职责原则,将创建逻辑集中到一个工厂里
class Payment(object):
    \'\'\'抽象产品角色\'\'\'
    def __init__(self, name):
        self.name = name
    def pay(self):
        raise NotImplemented(\'请使用同名pay方法\')

class AiliPay(Payment):   #支付宝
    \'\'\'具体产品角色\'\'\'
    def pay(self):
        print(f\'{self.name}使用了支付宝支付\')

class WeChat(Payment):   #微信支付
    \'\'\'具体产品角色\'\'\'
    def pay(self):
        print(f\'{self.name}使用了微信支付\')

#归一化设计
import sys
class PamentFactory:    #工厂角色
    def pays(self,kind,name):
        if hasattr(sys.modules[\'__main__\'],kind):  #判断是否可以被反射
            if callable(getattr(sys.modules[\'__main__\'],kind)):
                s=getattr(sys.modules[\'__main__\'], kind)(name)
                s.pay()
        else:
            print(\'不可以被反射\')
p=PamentFactory()
f=p.pays(\'WeChat\',\'xiaotong\')
s=p.pays(\'AiliPay\',\'minmin\')

# xiaotong使用了微信支付
# minmin使用了支付宝支付

以上是关于工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式学习——简单工厂模式工厂模式抽象工厂模式

设计模式简单工厂模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

设计模式学习——简单工厂模式工厂模式抽象工厂模式

设计模式工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

设计模式-简单工厂工厂方法模式抽象工厂模式详解

C++工厂模式(简单工厂工厂方法抽象工厂)