Flask 使用工厂模式

作者:tigeriaf 时间:2021-10-01 01:52:58 

Flask 使用工厂模式

1、工厂模式

在面向对象编程中,工厂模式是开发过程中最常用的设计模式之一,属于创建型模式,就是通过一个接口函数或对象来创建其他对象并返回,该模式下不会对外暴露创建对象的具体逻辑,使用的接口函数也被叫做工厂函数。工厂模式可以使一个类的例化推迟到子类中进行,也就是说工厂模式可以推迟到在程序运行的时候才动态决定要实例化哪个类,而不是在编译时就必须进行实例化。

2、使用工厂方法创建 app 对象

我们之前是用app=Flask(__name__)创建 Flask 应用实例的,但是如果我们想要创建多个实例,多个实例使用不同的配置的时候,就会非常麻烦,那我们就可以通过调用一个create_app()函数来返回应用实例,通过传入不同的配置来创建不同的应用实例,这个create_app()函数就是工厂函数,这种方法就是工厂方法。

使用工厂方法的好处:

  • 将创建应用实例的过程交给工厂函数,通过传入不同的配置,可以方便的创建不同环境的应用。

  • 可以方便快速的进行不同配置的切换,进而切换不同配置的应用,方便进行测试和部署。

下面对之前的Flask应用主程序中引入工厂函数:


def create_app(config_name):

config = config_dict.get(config_name)

app = Flask(__name__)

app.config.from_object(config)  

......

# 注册蓝图

app.register_blueprint(user_blue)

app.register_blueprint(admin_blue)

return app

工厂函数接收配置名称 config_name,支持在应用程序的不同位置传人不同的配置名称来创建实例,除了上面代码所展示的,把注册蓝图的代码放入工厂函数,还可以把错误处理函数、上下文处理函数、日志处理函数等类似的接收程序实例 app 作为参数的函数放入工厂函数中进行,工厂函数类似于一个流水线,创建完应用实例 app 后,执行一系列的注册函数为实例 app 注册扩展功能等,等执行完返回 app 时,我们就可以得到一个包含我们想要的所有扩展功能的应用实例。

来源:https://juejin.cn/post/7033928874337992740

标签:Flask,工厂模式
0
投稿

猜你喜欢

  • 将数据从MySQL迁移到 Oracle的注意事项

    2008-12-03 15:41:00
  • MySql节点管理安装步骤

    2010-10-14 14:13:00
  • python简单鼠标自动点击某区域的实例

    2021-03-05 16:35:52
  • python将字典内容写入json文件的实例代码

    2023-08-08 09:14:55
  • 各浏览器 CSS Hack 整理

    2008-01-17 10:54:00
  • conn.execute的用法

    2008-07-03 12:58:00
  • div中class与id的区别及应用

    2007-09-22 08:37:00
  • 3个asp简单技巧

    2009-11-26 20:55:00
  • 在python中画正态分布图像的实例

    2021-04-13 01:42:23
  • 网站的新趋势

    2008-12-11 13:36:00
  • 如何显示数据库里的图片?

    2010-06-08 09:36:00
  • Python面向对象的三大特性封装、继承、多态

    2023-12-11 05:15:52
  • 保护MySQL数据库中重要数据的注意事项

    2009-01-19 11:55:00
  • django框架之cookie/session的使用示例(小结)

    2023-06-24 08:24:42
  • 详解python ThreadPoolExecutor异常捕获

    2023-08-09 12:54:30
  • Python中列表与元组的乘法操作示例

    2021-05-09 17:11:25
  • DIV+CSS设计时容易犯的一些错误

    2007-11-13 12:42:00
  • PHP根据IP判断地区名信息的示例代码

    2023-09-10 14:05:55
  • 如何才能保护好我们的SQL Server数据库

    2009-01-08 13:37:00
  • Python 写小游戏吃金币+打乒乓+滑雪(附源码)

    2021-05-17 20:56:37
  • asp之家 网络编程 m.aspxhome.com