天天看點

Python:設計模式之模型-視圖-控制器-MVC複合模式

複合模式:

将兩個或更多個模式組合成解決常見或普遍性問題的解決方案

MVC模式工作機制

模型,提供資料和業務邏輯

視圖,負責資料展示

控制器,模型和視圖的粘合劑

MVC模式術語

模型:聲明一個存儲和操作資料的類

視圖:聲明一個類來建構使用者界面和顯示資料

控制器:聲明一個連接配接模型和視圖的類

用戶端:聲明一個類,更具某些操作來獲得某些結果

MVC模式應用場景

1、當需要更改展示方式而不更改業務邏輯

2、多個控制器可以用于使用多個視圖來更改使用者界面上的展示

3、再次重申,當模型改變時,視圖無需改動,因為它們是互相獨立的

MVC詳細介紹

1、模型-了解應用程式的情況

模型是應用程式的基石,它獨立于視圖和控制器,而視圖和控制器則依賴于模型

2、視圖-外觀

視圖用來将資料展示到接口上,可以獨立開發,但不應該包含任何複雜的邏輯

邏輯應該放在控制器或模型中

3、控制器-膠水

控制器用來控制使用者在界面上的互動

控制器不應該進行資料庫調用或參與資料展示

控制器應該作為模型和視圖之間的粘合劑,并且盡可能薄

MVC模式的優點

1、使用MVC,開發人員可以将軟體應用程式分為3個主要部分:模型,視圖,控制器

有助于提高可維護性,強制松耦合,并降低複雜度

2、MVC允許對前端視圖進行獨立更改,而後端邏輯無需任何修改或隻需進行很少的更改

是以,開發工作仍然可以獨立進行

3、類似地,可以更改模型或業務邏輯,而無需對視圖進行任何更改

4、可以更改控制器,而不會對視圖或者模型造成任何影響

5、MVC有助于招聘具有特定能力的人員,例如平台工程師和UI工程師,

他們可以在自己的專業領域獨立工作

代碼示例

# -*- coding: utf-8 -*-


class Model(object):
    def get_data(self):
        data = [
            {
                "name": "Tom",
                "age": 23
             },
            {
                "name": "Jack",
                "age": 21
            },
        ]
        return data


class View(object):
    def show_data(self, data):
        for row in data:
            print(row["name"], row["age"])


class Controller(object):
    def __init__(self):
        self.model = Model()
        self.view = View()

    def interface(self):
        data = self.model.get_data()
        self.view.show_data(data)


if __name__ == '__main__':
    controller = Controller()
    controller.interface()
"""
Tom 23
Jack 21
"""
      

參考

《Python設計模式第2版》第九章 模型-視圖-控制器-複合模式