MVC 编程模式

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: [1]  
  • Model(模型)表示应用程序核心(比如数据库记录列表)。
  • View(视图)显示数据(数据库记录)。
  • Controller(控制器)处理输入(写入数据库记录)。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
  通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
  通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。


     它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

视图

视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由 HTML元素组成的界面,在新式的Web应用程序中, HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括 Adobe Flash和像 XHTMLXML/ XSL, WML等一些标识语言和 Web services.
MVC好处是它能为应用程序处理很多不同的 视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像 EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器

控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送 HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pyside6 是一个 Python 的 GUI 框架,它提供了一些用于创建图形用户界面的工具和库。其中,MVC 是一种常见的设计模式,用于将应用程序的数据、用户界面和控制逻辑分离开来。在 Pyside6 中,可以使用 QAbstractItemModel 类来实现 MVC 模式。 具体来说,QAbstractItemModel 类是一个抽象基类,它定义了一些方法,用于管理数据模型。在使用 MVC 模式时,我们需要创建一个继承自 QAbstractItemModel 的子类,并实现其中的一些方法,例如 index()、parent()、rowCount() 和 columnCount() 等。然后,我们可以将这个数据模型与一个视图(例如 QTableView)关联起来,从而实现数据的显示和编辑。 下面是一个简单的示例代码,演示了如何使用 Pyside6 和 MVC 模式来创建一个简单的表格应用程序: ```python from PySide6.QtCore import Qt, QAbstractTableModel, QModelIndex from PySide6.QtWidgets import QApplication, QTableView class MyTableModel(QAbstractTableModel): def __init__(self, data): super().__init__() self._data = data def rowCount(self, parent=QModelIndex()): return len(self._data) def columnCount(self, parent=QModelIndex()): return len(self._data[0]) def data(self, index, role=Qt.DisplayRole): if role == Qt.DisplayRole: return str(self._data[index.row()][index.column()]) return None if __name__ == '__main__': app = QApplication([]) data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] model = MyTableModel(data) view = QTableView() view.setModel(model) view.show() app.exec() ``` 在这个示例中,我们创建了一个 MyTableModel 类,它继承自 QAbstractTableModel,并实现了其中的三个方法:rowCount()、columnCount() 和 data()。这个数据模型包含了一个二维数组,用于存储表格中的数据。然后,我们创建了一个 QTableView 视图,并将这个数据模型与之关联起来,从而实现了数据的显示和编辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值