我已经阅读了许多有关MVC的出版物,但我仍然无法清楚地理解为什么我们需要“控制器”。
我通常在客户端-服务器模型中编写应用程序:
服务器包含所有业务逻辑,并且对GUI一无所知。它完成主要工作,尽可能具有可移植性。
客户端是一个GUI,它绑定到服务器,与用户交互,将用户的命令发送到服务器。
我喜欢这种架构,但我想不通为什么人们真正需要另一个媒介在客户端和服务器之间,这似乎就是控制器?
更新:简单的例子:假设我们需要编写一些数据记录器。数据来自COM端口,使用某种协议进行编码。需要在一个简单的日志窗口中显示接收到的消息。
我会这样做:
服务器包含以下项目:
Data_receiver
:实际上从COM端口接收原始数据,但它是接口,因此我们能够创建另一个从任何其他源接收数据的类;Data_decoder
:获取原始数据并返回结果解码消息,它也是接口,因此我们可以轻松更改编码协议;Data_core
:使用Data_receiver
和Data_decoder
实例发出信号给客户端。
客户端包含以下项目:
- 应用程序核心:创建
Data_receiver
实例(连接到COM端口的实例),Data_decoder
和Data_core
(它接受Data_receiver
和Data_decoder
实例的引用),还创建GUI简单日志窗口(它接受Data_core
的引用); - GUI简单日志窗口:绑定到
Data_core
,即侦听由其发出的信号,并显示接收的数据。
根据我对MVC的理解,GUI不应该直接从 Data_core
接收到信息,因为这应该由controller负责并将数据传递给GUI。但是,如果GUI直接从model中获取这些数据,会发生什么糟糕的事情呢?