美文网首页
浅谈Python设计模式 - 工厂模式

浅谈Python设计模式 - 工厂模式

作者: Littlefive的微博 | 来源:发表于2019-11-22 20:54 被阅读0次

声明:本系列文章主要参考《精通Python设计模式》一书,并且参考一些资料,结合自己的一些看法来总结而来。

工厂模式:

  顾名思义,工厂则是根据提供的不同的材料,生产出不同的产品。那么在编程的设计模式,根据提供不同的用户输入,调用相同的接口,得出不同的结果。

示例一:

  在编写一个web框架时,我们需要考虑到用户可能会连接各种各样的数据库,但是我们不能预知用户会使用哪个数据库。于是我们提供一个通用方法,里面包含了各个数据库的连接方案,用户在使用过程中,只需要传入数据库的名字并给出连接所需要的信息,即可得到一个固定的 | 针对用户所选数据库的 | 连接字符串。

代码:

def connect(db, *arg, **kwargs):  
    db = db.lower()
    dbname = kwargs['db']

    if db == 'mysql':
        result = "mysql+pymysql://{username}:{password}@{server}/{dbname}".format(username = kwargs['username'], password = kwargs['password'], server = kwargs['server'], dbname=dbname)
    elif db == 'postgresql:
        result = 'postgresql://{username}:{passwrod}@{server}/{dbname}'.format(susername = kwargs['username'], password = kwargs['password'], server = kwargs['server'], dbname=dbname)

    return result

可以看到:

如果用户的输入为 'MySQL', 那么工厂方法会为其返回一个用于连接 MySQL 数据库的连接字符串;(使用pymysql进行连接)

如果用户的输入为 'postgresql',那么将会得到一个用于连接 postgresql数据库的连接字符串;更多的则是同样的原理。(安装psycopg2进行连接)。

为了方便理解,那么继续看下面这个案例:

  在实际开发过程中,分为生产模式和开发模式,那么我也可以通过工厂模式,在不同的模式下通过输出不同的命令,调用相同的接口完成 不同环境下的配置实现。

示例二:

# 在config.py模块下
class Config(object):
    # 放置两种模式下共同的配置
    pass 

class DevelopConfig(Config):
    DEBUG = True
    LOG_LEVEL = logging.DEBUG

class ProductConfig(Config):
    LOG_LEVEL = logging.ERROR

config = {
    "development": DevelopConfig,
    "production": ProductConfig
}

# __init__.py模块下
def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])

也就是说:
  当输入“development”,则加载开发环境的配置文件,而输入“production”,则加载生产环境下的配置文件。

以上就是工厂模式:

总结:其实这个方法非常初级非常暴力,就是无限的罗列需要考虑的情况并给出对应的处理而已。

over~~~~~~~

相关文章

  • 浅谈Python设计模式 - 工厂模式

    声明:本系列文章主要参考《精通Python设计模式》一书,并且参考一些资料,结合自己的一些看法来总结而来。 工厂模...

  • 浅谈Python设计模式 - 抽象工厂模式

      声明:本系列文章主要参考《精通Python设计模式》一书,并且参考一些资料,结合自己的一些看法来总结而来。 在...

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

  • 单件设计模式

    一、定义 设计模式 设计模式就是一种更好的编写代码方案。 常见设计模式 工厂设计模式、抽象工厂设计模式、抽象工厂设...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

网友评论

      本文标题:浅谈Python设计模式 - 工厂模式

      本文链接:https://www.haomeiwen.com/subject/zstcwctx.html