工厂模式

工厂模式

  • 定义:不直接向客户暴露对象创建实现的细节,而是通过一个工厂类来负责创建产品类的实例
  • 角色:抽象产品角色,具体产品角色,工厂角色
  • 使用场景:工厂模式是创建型模式,它的作用是创建对象
  • 优点:隐藏了对象创建产品的细节,客户段不需要修改代码
  • 缺点:违反了单一职责原则,将创建逻辑集中到一个工厂里
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使用了支付宝支付
posted @ 2021-06-03 12:41  刘家小仙女  阅读(49)  评论(0编辑  收藏  举报