工厂模式
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使用了支付宝支付
以上是关于工厂模式的主要内容,如果未能解决你的问题,请参考以下文章
设计模式简单工厂模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )