Python:设计模式之模型-视图-控制器-MVC复合模式

简介: 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版》第九章 模型-视图-控制器-复合模式

相关文章
|
6天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品加工优化的深度学习模型
使用Python实现智能食品加工优化的深度学习模型
99 59
|
19天前
|
机器学习/深度学习 数据采集 传感器
使用Python实现深度学习模型:智能土壤质量监测与管理
使用Python实现深度学习模型:智能土壤质量监测与管理
178 69
|
15天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
1天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品市场预测的深度学习模型
使用Python实现智能食品市场预测的深度学习模型
15 5
|
3天前
|
机器学习/深度学习 算法 数据可视化
使用Python实现深度学习模型:智能食品配送优化
使用Python实现深度学习模型:智能食品配送优化
13 2
|
2天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
11 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
2天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
9 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
8天前
|
机器学习/深度学习 数据采集 数据库
使用Python实现智能食品营养分析的深度学习模型
使用Python实现智能食品营养分析的深度学习模型
33 6
|
5天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品储存管理的深度学习模型
使用Python实现智能食品储存管理的深度学习模型
18 2
|
6天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
19 1