python工厂模式代码-python设计模式(二)之简单工厂模式

简单工厂模式,可能你不是十分掌握它的概念,但是在日常码代码中你一定不经意间用到过。

一、类别:

简单工厂模式又称之为静态工厂方法,属于创建型模式。

二、定义:

在简单工厂模式中,可以根据传递的参数不同,返回不同类的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。

三、应用场景:

工厂类负责创建的对象比较少。 简单工厂模式最大的优点在于实现对象的创建和对象的使用分离,但是如果产品过多时,会导致工厂代码非常复杂。简单工厂模式的要点就在于当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。

四、代码实现:

看一下下面的例子:

class Payment(metaclass=ABCMeta):

@abstractmethoddefpay(self, money):pass

classAliPay(Payment):def __init__(self, yu_e_bao=False):

self.yu_e_bao=yu_e_baodefpay(self, money):ifself.yu_e_bao:print(f"use yu_e_bao pay {money}")else:print(f"use zhifubao pay {money}")classWeChat(Payment):defpay(self, money):print(f"use Wechat pay {money}")classPaymethod():defcreate_payment(self, method):if method == "yu_e_bao":returnAliPay(True)elif method == "zhifubao":returnAliPay(False)elif method == "Wechat":returnWeChat()else:

logging.log.error("method error")

p =Paymethod()

f= p.create_payment("zhifubao")

f.pay(30) #use zhifubao pay 30

f = p.create_payment("Wechat")

f.pay(300) #use Wechat pay 300

我们在调用时不关心是如何实现的,只关心我传入的参数给我返回了一个类的实例化。隐藏了对象创建代码的细节,客户端不需要修改代码。但是如果要建的实例很多,我们要逐一定义的话就很麻烦了。

此模式还有三个角色:

抽象产品角色:Payment类,定义产品的必要功能。

具体产品角色:Alipay,Wechat类,具体实例化出来的对象。

工厂角色:Paymethod类,根据参数输出具体产品。

五、优缺点:

优点:用户只需要传入具体产品,就可以得到实例化的类,不需要知道具体实现过程。

缺点:如果具体产品角色很多的时候,定义简单工厂就会比较麻烦。不利于扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值