Model view controller MVC:为什么我们需要;控制员;,或者什么时候我们应该使用这种模式?
我读过很多关于MVC的出版物,但我仍然不清楚为什么我们需要“控制器” 我通常以客户机-服务器模式编写应用程序: 服务器包含所有的业务逻辑,它对gui一无所知。它完成了主要任务,并且尽可能便于携带 客户端是一个GUI,它绑定到服务器,与用户交互,从用户向服务器发送命令 我喜欢这种体系结构,但我不明白为什么人们真的需要在客户端和服务器之间增加一种媒介,即控制器 UPD:简单示例:假设我们需要编写一些数据记录器。数据来自COM端口,通过某种协议进行编码。需要在一个简单的日志窗口中显示收到的消息 我将如何做到: 服务器包含以下项目:Model view controller MVC:为什么我们需要;控制员;,或者什么时候我们应该使用这种模式?,model-view-controller,client-server,application-design,Model View Controller,Client Server,Application Design,我读过很多关于MVC的出版物,但我仍然不清楚为什么我们需要“控制器” 我通常以客户机-服务器模式编写应用程序: 服务器包含所有的业务逻辑,它对gui一无所知。它完成了主要任务,并且尽可能便于携带 客户端是一个GUI,它绑定到服务器,与用户交互,从用户向服务器发送命令 我喜欢这种体系结构,但我不明白为什么人们真的需要在客户端和服务器之间增加一种媒介,即控制器 UPD:简单示例:假设我们需要编写一些数据记录器。数据来自COM端口,通过某种协议进行编码。需要在一个简单的日志窗口中显示收到的消息 我将如
:实际上从COM端口接收原始数据,但它是接口,因此我们可以创建另一个类,从任何其他源接收数据李>Data\u receiver
:获取原始数据并返回解码后的消息,它也是一个接口,因此我们可以轻松更改编码协议李>Data\u decoder
:使用数据核心
和数据接收器
的实例,向客户端发送信号数据解码器
- Appl core:创建
(连接到COM端口的那一个)、数据_接收器
和数据_解码器
(它引用数据_核心
和数据_接收器
实例),还创建GUI简单日志窗口(它引用数据_解码器
)李>数据_核心
- GUI简单日志窗口:绑定到
,即侦听它发出的信号,并显示接收到的数据数据\u核心
Data\u core
获取接收到的消息,因为控制器应该这样做,然后将数据传递给GUI。但是,如果GUI直接从模型中获取这些数据,会发生什么不好的事情呢?“客户机-服务器”与MVC无关
我是这样理解的:
模型是您构建数据的方式
视图是可见的表示形式。(图形用户界面)
控制器使用该逻辑控制视图和/或其他逻辑
当您以测试驱动的开发方式驱动您的开发时,将其划分为不同的部分非常有用,这样您就可以附加各种测试 迟做总比不做好我想纠正你对“为什么客户机和服务器之间需要多一层”的误解 如果你看了下面几行,答案非常清楚,MVC是一个三角形的架构模型 视图向模型请求请求,模型向控制器请求,控制器对其进行处理并发送回视图
The Model is the way you structure your data.
The View is the visible representation. (GUI)
The Controller uses the logic to control the view and/or other logic.
问候,,
Pavan.G在过去,我曾多次问过自己这个问题,最近我一直在阅读关于JSP model 2架构的文章,维基百科条目说明如下 关于J2EE平台中Web层技术的文献经常使用术语“模型1”和“模型2”,但没有解释。这个术语来源于JSP规范的早期草案,它描述了JSP页面的两种基本使用模式。虽然这些术语已从规范文档中消失,但它们仍然是常用的。模型1和模型2只是指(分别)不存在或存在一个控制器servlet,该servlet从客户机层发送请求并选择视图
这基本上意味着MVC模式本身存在变化,因此您可以根据您的项目始终应用MVC或MV模式。然而,一个合适的MVC体系结构确实应该有一个控制器,因为模型和视图不应该直接相互通信。但是逻辑和可视化表示已经被客户机-服务器体系结构分割开来:服务器拥有数据和逻辑,客户机表示数据。我更新了我的问题(添加了简单的应用程序示例),请以某种方式对其进行评论(其中什么应该是模型,什么应该是视图,什么应该是控制器),我猜
数据核心
就是您的控制器。您创建的窗口就是视图。MVC架构在多个窗口中发生不同的事情时生效,因为您的数据核心将变得非常复杂。因此,您将尝试创建控制器的小岛,这些小岛只执行其相应视图的逻辑。然后将所有控制器连接到数据核心。我喜欢这个问题