工厂模式
概念
定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。
适用场景:
- 创建对象需要大量重复的代码
- 创建对象需要访问某些信息, 而这些信息不应该包含在复合类中
- 创建对象的生命周期必须集中管理, 以保证在整个程序中具有一致的行为。
需求
实现一个工厂方法,通过输入物料,然后产出不同的产品类。
实现
(一)、简单工厂
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#######################################################
# 文件名 : factory.py
# 作者 : WangYi
# 电子邮箱 : gzytemail@126.com
# 日期 : 2017/04/12 14:53:19
#
# 描述 : 工厂模式
#
class ProductA:
"""
产品A
"""
def __init__(self):
pass
def product(self):
print("生产一个产品A")
class ProductB:
"""
产品B
"""
def __init__(self):
pass
def product(self):
print("生产一个产品B")
class Factory(object):
"""
工厂
"""
def __init__(self):
pass
@staticmethod
def make_product(material):
if material == "A":
return ProductA()
elif material == "B":
return ProductB()
else:
raise ValueError("the material can't made product")