Flask 使用工廠模式

1、工廠模式
在面向?qū)ο缶幊讨?,工廠模式是開(kāi)發(fā)過(guò)程中最常用的設(shè)計(jì)模式之一,屬于創(chuàng)建型模式,就是通過(guò)一個(gè)接口函數(shù)或?qū)ο髞?lái)創(chuàng)建其他對(duì)象并返回,該模式下不會(huì)對(duì)外暴露創(chuàng)建對(duì)象的具體邏輯,使用的接口函數(shù)也被叫做工廠函數(shù)。工廠模式可以使一個(gè)類(lèi)的例化推遲到子類(lèi)中進(jìn)行,也就是說(shuō)工廠模式可以推遲到在程序運(yùn)行的時(shí)候才動(dòng)態(tài)決定要實(shí)例化哪個(gè)類(lèi),而不是在編譯時(shí)就必須進(jìn)行實(shí)例化。
2、使用工廠方法創(chuàng)建 app 對(duì)象
我們之前是用app=Flask(__name__)創(chuàng)建 Flask 應(yīng)用實(shí)例的,但是如果我們想要?jiǎng)?chuàng)建多個(gè)實(shí)例,多個(gè)實(shí)例使用不同的配置的時(shí)候,就會(huì)非常麻煩,那我們就可以通過(guò)調(diào)用一個(gè)create_app()函數(shù)來(lái)返回應(yīng)用實(shí)例,通過(guò)傳入不同的配置來(lái)創(chuàng)建不同的應(yīng)用實(shí)例,這個(gè)create_app()函數(shù)就是工廠函數(shù),這種方法就是工廠方法。
使用工廠方法的好處:
- 將創(chuàng)建應(yīng)用實(shí)例的過(guò)程交給工廠函數(shù),通過(guò)傳入不同的配置,可以方便的創(chuàng)建不同環(huán)境的應(yīng)用。
- 可以方便快速的進(jìn)行不同配置的切換,進(jìn)而切換不同配置的應(yīng)用,方便進(jìn)行測(cè)試和部署。
下面對(duì)之前的Flask應(yīng)用主程序中引入工廠函數(shù):
def create_app(config_name):
config = config_dict.get(config_name)
app = Flask(__name__)
app.config.from_object(config)
......
# 注冊(cè)藍(lán)圖
app.register_blueprint(user_blue)
app.register_blueprint(admin_blue)
return app
工廠函數(shù)接收配置名稱(chēng) config_name,支持在應(yīng)用程序的不同位置傳人不同的配置名稱(chēng)來(lái)創(chuàng)建實(shí)例,除了上面代碼所展示的,把注冊(cè)藍(lán)圖的代碼放入工廠函數(shù),還可以把錯(cuò)誤處理函數(shù)、上下文處理函數(shù)、日志處理函數(shù)等類(lèi)似的接收程序?qū)嵗?app 作為參數(shù)的函數(shù)放入工廠函數(shù)中進(jìn)行,工廠函數(shù)類(lèi)似于一個(gè)流水線,創(chuàng)建完應(yīng)用實(shí)例 app 后,執(zhí)行一系列的注冊(cè)函數(shù)為實(shí)例 app 注冊(cè)擴(kuò)展功能等,等執(zhí)行完返回 app 時(shí),我們就可以得到一個(gè)包含我們想要的所有擴(kuò)展功能的應(yīng)用實(shí)例。
到此這篇關(guān)于 Flask 使用工廠模式的文章就介紹到這了,更多相關(guān) Flask 工廠模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux系統(tǒng)下pip升級(jí)報(bào)錯(cuò)的解決方法
這篇文章主要給大家介紹了關(guān)于linux系統(tǒng)下pip升級(jí)報(bào)錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
python 中值濾波,椒鹽去噪,圖片增強(qiáng)實(shí)例
今天小編就為大家分享一篇python 中值濾波,椒鹽去噪,圖片增強(qiáng)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python?pycharm讀取文件相對(duì)路徑與絕對(duì)路徑的方法
這篇文章主要給大家介紹了關(guān)于Python?pycharm讀取文件相對(duì)路徑與絕對(duì)路徑的方法,絕對(duì)路徑就是文件的真正存在的路徑,是指從硬盤(pán)的根目錄(盤(pán)符)開(kāi)始,進(jìn)行一級(jí)級(jí)目錄指向文件,相對(duì)路徑就是以當(dāng)前文件為基準(zhǔn)進(jìn)行一級(jí)級(jí)目錄指向被引用的資源文件,需要的朋友可以參考下2023-12-12
Python使用pymongo模塊操作MongoDB的方法示例
這篇文章主要介紹了Python使用pymongo模塊操作MongoDB的方法,結(jié)合實(shí)例形式分析了Python基于pymongo模塊連接MongoDB數(shù)據(jù)庫(kù)以及增刪改查與日志記錄相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
python NumPy ndarray二維數(shù)組 按照行列求平均實(shí)例
今天小編就為大家分享一篇python NumPy ndarray二維數(shù)組 按照行列求平均實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
Python常見(jiàn)數(shù)據(jù)類(lèi)型轉(zhuǎn)換操作示例
這篇文章主要介紹了Python常見(jiàn)數(shù)據(jù)類(lèi)型轉(zhuǎn)換操作,結(jié)合實(shí)例形式分析了Python針對(duì)列表、集合、元組、字典等數(shù)據(jù)類(lèi)型轉(zhuǎn)換的相關(guān)操作技巧,需要的朋友可以參考下2019-05-05

