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):
   """
  简单工厂
  """
   @staticmethod
   def product_car(name):
       if name == 'asus':
           return Asus()
       elif name == 'dell':
           return Dell()


simple_factory = SimpleCarFactory()
asus = simple_factory.product_car('asus')
dell = SimpleCarFactory.product_car('dell')

你会发现,有了SimpleCarFactory类后,就可以通过向固定的接口传入参数获得想要的对象实例

总结:

  • 简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。

  • 简单工厂模式最大的优点在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责,但是其最大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。

  • 简单工厂模式适用情况包括:工厂类负责创建的对象比较少;客户端只知道传入工厂类的参数,对于如何创建对象不关心。

  •  

原文地址:https://www.cnblogs.com/fiee/p/13911931.html