python实现简单工厂模式
模式定义:
定义一个工厂类,它可以根据参数的不同返回不同类的实例,在简单工厂模式中用于被创建实例 的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法(Static Factory Method)。需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程
模式结构:
简单工厂模式包含如下角色:
Factory:工厂角色
Product:抽象产品角色
ConcreteProduct:具体产品角色
简单工厂:
首先,我们来看一个简单工厂的例子:
class Asus(object):
"""
华硕
"""
def __repr__(self):
return "ASUS"
class Dell(object):
"""
戴尔
"""
def __repr__(self):
return "DELL"
# 假设我们有两款电脑产品,分别是戴尔和华硕,如果没有“工厂”来生产它们,我们就要在代码中自己进行实例化,如:
asus = Asus()
dell = Dell()
但现实中,你可能会面对很多电脑产品,而且每个产品的构造参数还不一样,这样在创建实例时会遇到麻烦。这时就可以构造一个“简单工厂”把所有产品实例化的过程封装在里面。
class SimpleCarFactory(object):
"""
简单工厂
"""
你会发现,有了SimpleCarFactory类后,就可以通过向固定的接口传入参数获得想要的对象实例
总结:
-
简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。
-
简单工厂模式最大的优点在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责,但是其最大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。
-
简单工厂模式适用情况包括:工厂类负责创建的对象比较少;客户端只知道传入工厂类的参数,对于如何创建对象不关心。
-