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
投稿

猜你喜欢

  • Django框架CBV装饰器中间件auth模块CSRF跨站请求问题

    2021-03-25 09:42:01
  • 在matplotlib的图中设置中文标签的方法

    2023-10-10 07:17:53
  • pyqt实现.ui文件批量转换为对应.py文件脚本

    2022-01-22 03:32:26
  • 利用Google Ajax Library API加速常用js类库的载入

    2008-06-17 17:44:00
  • mysql清除log-bin日志的方法

    2024-01-15 08:22:30
  • JS小游戏之象棋暗棋源码详解

    2024-04-23 09:24:55
  • 非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程

    2023-07-21 16:21:41
  • Pytorch深度学习经典卷积神经网络resnet模块训练

    2022-12-02 01:43:23
  • python实现XML解析的方法解析

    2021-08-20 01:58:58
  • 浅谈pytorch中的nn.Sequential(*net[3: 5])是啥意思

    2023-10-05 05:42:55
  • Python基于tkinter模块实现的改名小工具示例

    2023-08-31 10:40:01
  • 截字符串 去除HTML标记

    2023-07-29 17:01:08
  • JS性能优化笔记搜索整理

    2024-04-17 09:54:55
  • javascript+css3开发打气球小游戏完整代码

    2024-05-02 16:15:54
  • python boto和boto3操作bucket的示例

    2022-08-05 03:22:49
  • python使用代理ip访问网站的实例

    2022-02-08 08:16:36
  • Python 安装第三方库 pip install 安装慢安装不上的解决办法

    2023-02-23 13:43:45
  • Python如何生成随机数及random随机数模块应用

    2022-07-28 22:24:21
  • mysql游标的原理与用法实例分析

    2024-01-15 16:33:36
  • Python pip安装第三方库的攻略分享

    2023-02-15 07:53:26
  • asp之家 网络编程 m.aspxhome.com