複合模式:
将兩個或更多個模式組合成解決常見或普遍性問題的解決方案
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版》第九章 模型-視圖-控制器-複合模式