MVC模式的學習,本學習例子重點關注如何將Model與View分離,參考Web-MVC結構(上圖,本例將Browser和View統稱爲View),Controller主要作用於連接View與Model,就算沒有View/Controll的代碼,Model也應該是完整的,雖然操作起來會相對麻煩一些,但是隻要我們知道Model的API,依然能正常運行這個程序。
雖然本程序的Model部分只是return了一個字符串進行測試,但我認爲已經足以表達我所關注的重點:如何在保證View與Model分離的情況下將View的input傳給Model,並從Model得到output輸出到View。
-
View Class
- GUI設計導入(存放於View/Window/),可以使用wxFormBuilde快速生成圖形化界面
- GUI各控件所用到的參數設置和獲取值接口的封裝
- GUI的初始化接口
- GUI控件事件綁定以及回調函數的設置
- 考慮到控制檯(View/Console/)輸出也歸類到View,控制檯初始化/輸出的接口封裝,暫時沒添加控制檯input交互
- View/Window/目錄除了會存放已經設計好的GUI之外,還可以添加其他酷炫的動態效果設計
- View/Console/目錄功能和View/Window目錄功能一樣,如果覺得簡單的print()太單調,可以自行封裝酷炫的輸出方式,在View/View.py中調用
-
Model Class
- 各項業務功能的導入(如:Model/Test/),可以完全獨立編寫該業務所需要完成的功能,封裝API給Model/Model.py進行各項功能間的複雜邏輯處理
- 進行復雜邏輯的編寫,封裝對應API,不依賴於子目錄外的其它文件
- 輸出接口與回調函數的設置接口,用以提供給Controll直接使用
-
Controller Class
- 並沒有太嚴格的與Application進行區分,首先進行常規的入口參數檢查,並且做好用法幫助提示輸出
- 實例化View與Model
- 編寫輸入與輸出的回調函數 - do_work() 和 finish()
- 將Model輸入的回調函數綁定到觸發任務的View控件對應事件
- 將View輸出的回調函數綁定到Model的輸出
代碼下載:
git clone https://github.com/w0x0021/MVC_for_python.git
目錄結構 (20181124)
├─Model
│ ├─Test
│ │ └─test.py
│ └─Model.py
└─View
│ ├─Console
│ ├─Window
│ │ └─WindowMain.py
│ └─View.py
├─main.py
└─Controller.py