不同MVC之间的通信

时间:2017-04-12 18:01:24

标签: design-patterns model-view-controller

我对MVC的实现有缺点。

我见过的所有例子都很简单:模型的一个类和视图和控制器的相同。

如何在真实的应用程序中完成?

为了进一步澄清我的问题,假设我想创建一个涉及将棋子放在网格中的游戏。

对于我创建的网格:

  • 模型:array(GridModel类)
  • 查看:渲染数组(GridView类)
  • 控制器:在用户单击以在网格中放置一块(GridController类)
  • 后更新模型

可用的作品

  • 模型:所选部分的数组和一个字段(PieceModel类)
  • 查看:渲染可用部分数组(PieceView class)
  • 控制器:更新模型:所选部分(PieceController类)

在网格的一部分,我需要知道可用部分中的选定部分。

我的快速解决方案是将引用从PieceModel传递到GridView

问题:

  1. 我是否必须继续进行此分解,还是必须使用单个MVC(考虑将来添加功能)?

  2. 如果我需要保持这种分解,有没有办法确保不同的MVC之间以正确的方式进行通信?

1 个答案:

答案 0 :(得分:0)

基于许多关于MVC的stackoverflow问题/答案,该模型是定义应用程序业务逻辑的类组,而不是像例子和教程中所做的那样简单而独特的类。

我已将结构模式更改为修改后的MVC,其中视图和模型彼此之间不知道任何事情。

双方之间的所有通信都由控制器处理,因此每个控制器都需要了解相关视图所需的Model类。

在我的例子中:GridController现在有两个类的引用(GridModel和PieceModel)。

将来,当Model的类引用数量增长但可以通过某些Factory模式或依赖注入服务轻松解决时,这可能会产生问题。