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 時,我們就可以得到一個包含我們想要的所有擴展功能的應用實例。

到此這篇關於 Flask 使用工廠模式的文章就介紹到這瞭,更多相關 Flask 工廠模式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: