MVC設計模式(Python)
阿新 • • 發佈:2020-08-12
目錄
工作原理
MVC模式的工作機制為:
- 模型提供資料和業務邏輯(如何儲存和查詢資訊),
- 檢視負責資料的展示(如何呈現),
- 而控制器是兩者之間的粘合劑,根據使用者要求的呈現方式來協調模型和檢視。
有趣的是,檢視和控制器依賴於模型,而不是反過來。這主要是因為使用者所關心的是資料。模型是可以獨立工作的,這是MVC模式的關鍵所在。
MVC設計模式使用以下術語——模型、檢視、控制器和客戶端。
- 模型:宣告一個儲存和操作資料的類。
- 檢視:宣告一個類來構建使用者介面和顯示資料。
- 控制器:宣告一個連線模型和檢視的類。
- 客戶端:宣告一個類,根據某些操作來獲得某些結果。
簡而言之,MVC模式的主要意圖如下。
- 將資料和資料的展示隔離開來。
- 使類的維護和實現更加簡單。
- 靈活地改變資料的儲存和顯示方式。
兩者都是獨立的,因此可以靈活修改。
應用
我們想要開發一個應用程式,告訴使用者雲公司所提供的營銷服務,包括電子郵件、簡訊和語音設施。
我們首先要開發model類(模型),定義產品提供的服務,即電子郵件、簡訊和語音。這裡的每種服務都有特定的費率,例如每1000封電子郵件將向客戶收取2美元,而每1000條簡訊,費用為10美元,同時每1000條語音留言的費用為15美元。因此,模型提供與產品服務和價格相關的資料。
然後,我們來定義view類(檢視),它提供了將資訊反饋給客戶端的方法。這些方法是list_services()
和list_ pricing()
接下來,我們開始定義Controller類,這個類定義了兩個方法,即get_services()和get_pricing()。這兩個方法都是用來查詢模型並獲取資料的,然後將資料饋送到檢視,從而展示給使用者。
class Model: services = { 'email':{'number': 1000, 'price': 2}, 'sms':{'number':1000, 'price':10}, 'voice':{'number':1000, 'price': 20}, 'short-video':{'number':1000, 'price': 60} } class View: def list_services(self, services): for svc in services: print(svc, ' ') def list_pricing(self, services): for svc in services: print("For {} {} message, you may pay {}.".format(Model.services[svc]['number'], svc, Model.services[svc]['price'])) class Controller: def __init__(self): self.view = View() self.model = Model() def get_services(self): services = self.model.services.keys() return self.view.list_services(services) def get_pricing(self): services = self.model.services.keys() return self.view.list_pricing(services) class Client: controller = Controller() print("Serices Proviced") controller.get_services() print("Prices") controller.get_pricing() client = Client()
Serices Proviced
email
sms
voice
short-video
Prices
For 1000 email message, you may pay 2.
For 1000 sms message, you may pay 10.
For 1000 voice message, you may pay 20.
For 1000 short-video message, you may pay 60.