zoukankan      html  css  js  c++  java
  • 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类后,就可以通过向固定的接口传入参数获得想要的对象实例

    总结:

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

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

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

    •  

  • 相关阅读:
    golang-cron定时任务
    卡特兰数
    树的直径
    虚拟机之Hyper-V
    tag of loj
    wx.requestSubscribeMessage无法弹窗,显示20001报错?
    nginx日志切割
    小程序首次加载过慢以及点击微信授权不弹出授权框的问题
    外网访问小程序显示网络错误问题以及总是走wx.request里面的fail回调问题
    http转https以及ssl证书配置以及安装
  • 原文地址:https://www.cnblogs.com/fiee/p/13911931.html
Copyright © 2011-2022 走看看