设计模式-python版本-工厂模式

简介

工厂模式用于要创建对象的场景,有一个约束就是,这些对象的功能相似。让我看一个生活中的例子吧,小卖铺引进饮料!
在这里插入图片描述
由上图看出,小卖铺引进饮料经过两个角色:

  • 批发商:这家伙知道怎么弄到各个品牌的饮料,并且这家伙能熟知市面上流通着哪几个牌子
  • 工厂: 专注生产自己品牌的饮料

我们编程中的的工厂模式和这个类似,编程中的工厂模式需要两个角色:

  • 入口: 将请求转向真正的处理类,以及异常处理(比如说你要处理的格式,你没有定义处理类)
  • 处理类:真正的处理请求的类
实战
"""
@author: hananmin
@time: 2022/3/23 14:23
"""
# 处理json格式的工厂
class JsonDataFactory:

    def __init__(self, data):
        self.data = data

    @property
    def handle_data(self):
        return f'你的数据是json数据==>{self.data}'

# 处理xml格式的工厂
class XmlDataFactor:

    def __init__(self, data):
        self.data = data

    @property
    def handle_data(self):
        return f"你处理的数据是xml数据==>{self.data}"

# 入口
def factory_entrance(data):

    if "json" in data:
        return JsonDataFactory(data).handle_data
    elif "xml" in data:
        return XmlDataFactor(data).handle_data
    else:
        return "未识别的数据类型"

if __name__ == '__main__':
    print(factory_entrance("我是json数据"))
    print(factory_entrance("我是xml数据"))
  • factory_entrance: 是入口方法,将请求数据转向正确的工厂类,处理异常
  • JsonDataFactory和JsonDataFactory:真正处理数据的工厂类
抽象工厂模式

从上面的例子可以看出,当工厂类要处理的工作比较复杂的时候,工厂类会很臃肿。这时候可以将工厂类的部分功能独立出去。可以通过抽象工厂模式达到目的。
抽象工厂将工厂类分为两部分,借用上面可乐的例子:

  • 组件工厂: 为抽象工厂生产半成品,可以有多个。在可乐的例子中,组件工厂生产:铝罐、矿泉水、糖浆等
  • 抽象工厂:组装半成品。 在可乐的例子中,抽象工厂将各个半成品组成可乐。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值