简单工厂模式(Simple Factory Pattern)
模式定义
“”“
简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,
它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义
一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
”“”
模式结构图
Python代码
from abc import ABCMeta, abstractmethod
class Animal(metaclass=ABCMeta):
@abstractmethod
def say(self):
pass
class Cat(Animal):
def say(self):
print("MMMMMMMMM")
class Dog(Animal):
def say(self):
print("HHHHHHHH")
class AnimalFactory:
@staticmethod
def create_animal(type):
if type == 'cat':
return Cat()
elif type == 'dog':
return Dog()
if __name__ == '__main__':
cat = AnimalFactory.create_animal('cat')
cat.say()
dog = AnimalFactory.create_animal('dog')
dog.say()
模式分析
- 将对象的创建和对象本身业务处理分离可以降低系统的耦合度,使得两者修改起来都相对容易。
- 在调用工厂类的工厂方法时,由于工厂方法是静态方法,使用起来很方便,可通过类名直接调用,而且只需要传入一个简单的参数即可,在实际开发中,还可以在调用时将所传入的参数保存在XML等格式的配置文件中,修改参数时无须修改任何源代码。
- 简单工厂模式最大的问题在于工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,这一点与开闭原则是相违背的。
- 简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。
模式总结
简单工厂模式最大的优点在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责,但是其最大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。