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

举报
彭世瑜 发表于 2021/08/13 23:57:23 2021/08/13
【摘要】 复合模式: 将两个或更多个模式组合成解决常见或普遍性问题的解决方案 MVC模式工作机制 模型,提供数据和业务逻辑 视图,负责数据展示 控制器,模型和视图的粘合剂 MVC模式术语 模型:声明一个存储和操作数据的类 视图:声明一个类来构建用户界面和显示数据 控制器:声明一个连接模型和视图的类 客户端:声明一个类,更具某些操作来获得某些结果 MVC模式应用场景 1...

复合模式:
将两个或更多个模式组合成解决常见或普遍性问题的解决方案

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
"""


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

参考
《Python设计模式第2版》第九章 模型-视图-控制器-复合模式

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/93377919

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。