Flask 使用工厂模式
作者:tigeriaf 时间:2021-10-01 01:52:58
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