工厂模式
(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,屏蔽产品具体实现。
(个人练习)