二十三种设计模式:工厂模式篇(Python)

工厂模式


(1) 介绍
工厂模式(Factory Pattern),一种常用设计模式,属于创建型模式。
在工厂模式中强调创建对象不对客户端暴露逻辑过程,只提供共用接口来创建对象。
(2) 解决问题
实例化对象过程下沉,来让子类自己决定实例化哪一个工厂类。
(3) 使用场景
我们有计划的去创建不同条件下创建不同实例。
(4) 核心
创建实例过程要在子类
(5) 代码
结构:输入我们的需求,定制产生我们的想要的对象。

模式分为:简单工厂函数和工厂模式

内容:世界上有很多好茶,我们找到了两种,龙井茶与红茶。如果你想要,可以直接从大厂购买,而不是在意怎么从全世界找到它,以及怎么种植它。而购买又可分为,从售卖机处购买和商铺处购买。
第一种简单工厂函数,就是从售卖机处购买,你可以挑选售卖机(函数)内的各种茶----用函数打包多个实例化过程,根据需求选择一个实例化对象。
另一种是工厂模式,这种在商铺处购买,只卖龙井茶的商铺(实例化龙井茶子类)和只卖红茶的商铺(实例化红茶子类)。

#coding=utf-8
#!/usr/bin/python

#茶
class Tea():
    def __init__(self):
        pass
    def Drink(self):
        pass
#龙井茶
class DragonWellTea(Tea):
    def Drink(self):
        print('龙井茶好喝')
#红茶
class BlackTea(Tea):
    def Drink(self):
        print('红茶饮料好喝')

#售卖机
def Sell(type:str):
    if type == '龙井茶':
        return DragonWellTea()
    elif type == '红茶':
        return BlackTea()

#只卖龙井茶的商铺
class AShop():
    @staticmethod
    def BuyDragonWellTea():
        return DragonWellTea()
#只卖红茶的商铺
class BShop():
    @staticmethod
    def BuyBlackTea():
        return BlackTea()

'''
A(C) B(C)  A和B都继承C。设置一个函数,输入不同的值,
                        返回A或B的实例化对象----简单工厂函数(打包)

A(C) B(C)  A和B都继承C。设置a类,固定返回A实例化对象。
                        设置b类,固定返回B实例化对象。-----工厂模式(代加工)
'''
if __name__ == '__main__':
    #简单工厂函数
    XiaoMing = Sell('红茶')#小明在售卖机买了红茶
    XiaoMing.Drink()

    #工厂模式
    LiLi = AShop.BuyDragonWellTea()#丽丽在只卖龙井茶的商铺买了龙井茶
    LiLi.Drink()

(6)优点
工厂模式:1, 使用者创建对象,只需知道名称即可。2 ,增加产品,扩展以下工厂类即可。3,屏蔽产品具体实现。

(个人练习)

发布了9 篇原创文章 · 获赞 0 · 访问量 420

猜你喜欢

转载自blog.csdn.net/weixin_41901939/article/details/90486969