开篇引子
在前面的系列文章中,我们深入探讨了创建型、结构型和行为型设计模式在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模式章节,结合实际开发场景进行了提炼和扩展。