1. 程式人生 > 實用技巧 >MVC設計模式(Python)

MVC設計模式(Python)

目錄

工作原理

MVC模式的工作機制為:

  1. 模型提供資料和業務邏輯(如何儲存和查詢資訊),
  2. 檢視負責資料的展示(如何呈現),
  3. 而控制器是兩者之間的粘合劑,根據使用者要求的呈現方式來協調模型和檢視。

有趣的是,檢視和控制器依賴於模型,而不是反過來。這主要是因為使用者所關心的是資料。模型是可以獨立工作的,這是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.