当前位置:首页>python>《精通Python设计模式》精读:MVC模式

《精通Python设计模式》精读:MVC模式

  • 2026-10-21 13:28:08
《精通Python设计模式》精读:MVC模式

开篇引子

在前面的系列文章中,我们深入探讨了创建型、结构型和行为型设计模式在Python中的应用。今天,我们将目光投向更宏观的架构层面,探讨MVC架构模式、备忘录模式以及设计模式在现代微服务架构中的应用。这些模式不仅适用于单体应用,更是构建现代化、可扩展系统的基石。

核心观点:模型-视图-控制器(MVC)模式——分离关注点的经典架构

什么是MVC模式?

MVC模式将应用程序分为三个核心组件: 

- 模型(Model):处理数据逻辑和业务规则 

- 视图(View):负责用户界面展示 

- 控制器(Controller):处理用户输入并协调模型和视图

实战案例:简单的任务管理系统

from datetime import datetimefrom typing import List, Optionalclass Task:    """模型:任务实体"""    def __init__(self, title: str, description: str = "", completed: bool = False):        self.id = id(self)  # 简单的ID生成        self.title = title        self.description = description        self.completed = completed        self.created_at = datetime.now()    def complete(self):        self.completed = True    def __str__(self):        status = "✓" if self.completed else "○"        return f"[{status}] {self.title} - {self.description}"class TaskModel:    """模型:任务数据管理"""    def __init__(self):        self.tasks: List[Task] = []    def add_task(self, task: Task):        self.tasks.append(task)    def get_all_tasks(self) -> List[Task]:        return self.tasks    def get_task_by_id(self, task_id) -> Optional[Task]:        for task in self.tasks:            if task.id == task_id:                return task        return None    def complete_task(self, task_id: int):        task = self.get_task_by_id(task_id)        if task:            task.complete()            return True        return Falseclass TaskView:    """视图:用户界面"""    def show_tasks(self, tasks: List[Task]):        print("\n=== 任务列表 ===")        if not tasks:            print("暂无任务")            return        for task in tasks:            print(task)    def show_task_form(self):        print("\n=== 添加新任务 ===")        title = input("任务标题: ")        description = input("任务描述: ")        return title, description    def show_message(self, message: str):        print(f"\n{message}")class TaskController:    """控制器:协调模型和视图"""    def __init__(self):        self.model = TaskModel()        self.view = TaskView()    def add_task(self):        title, description = self.view.show_task_form()        if title.strip():            task = Task(title, description)            self.model.add_task(task)            self.view.show_message(f"任务 '{title}' 已添加")        else:            self.view.show_message("任务标题不能为空")    def show_tasks(self):        tasks = self.model.get_all_tasks()        self.view.show_tasks(tasks)    def complete_task(self, task_id: int):        if self.model.complete_task(task_id):            self.view.show_message("任务已完成")        else:            self.view.show_message("未找到对应任务")# 使用MVC模式controller = TaskController()# 模拟用户操作controller.add_task()  # 添加任务controller.add_task()  # 添加任务controller.show_tasks()  # 显示任务

=== 添加新任务 ===任务 '准备晚餐' 已添加=== 添加新任务 ===任务 '准备零食' 已添加=== 任务列表 ===[○] 准备晚餐 - 制作一份砂锅白菜豆腐鱼汤,要求:鱼要辣丁,豆腐要卤水点的,白菜要霜打的大白菜。[○] 准备零食 - 清炒小河虾,要求:河虾要鲜活的,炒出虾油,撒上椒盐。

Django中的MVC实现

Django框架采用MVT(Model-View-Template)模式,本质上与MVC相似.

实战总结

在现代软件开发中,设计模式的作用不仅限于解决编码层面的问题,更扩展到架构设计和系统组织层面:

1.MVC模式:分离关注点,使系统更易于维护和扩展。

---

本篇内容基于《精通Python设计模式(第2版)》中的MVC模式章节,结合实际开发场景进行了提炼和扩展。

最新文章

随机文章