Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 不同MVC之间的通信_Design Patterns_Model View Controller - Fatal编程技术网

Design patterns 不同MVC之间的通信

Design patterns 不同MVC之间的通信,design-patterns,model-view-controller,Design Patterns,Model View Controller,我在MVC的实现方面有缺点 我看到的所有示例都很简单:一个类用于模型,另一个类用于视图和控制器 在实际应用程序中是如何实现的 为了进一步澄清我的问题,假设我想创建一个游戏,将棋子放置在网格中 对于我创建的网格: 模型:数组(GridModel类) 视图:渲染数组(GridView类) 控制器:在用户单击在网格中放置一块后更新模型(GridController类) 对于可用件 模型:工件数组和所选工件的字段(PieceModelclass) 视图:呈现可用片段的数组(PieceViewcla

我在MVC的实现方面有缺点

我看到的所有示例都很简单:一个类用于模型,另一个类用于视图和控制器

在实际应用程序中是如何实现的

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

对于我创建的网格:

  • 模型:数组(GridModel类)
  • 视图:渲染数组(GridView类)
  • 控制器:在用户单击在网格中放置一块后更新模型(GridController类)
对于可用件

  • 模型:工件数组和所选工件的字段(
    PieceModel
    class)
  • 视图:呈现可用片段的数组(
    PieceView
    class)
  • 控制器:更新模型:所选工件(
    partecontroller
    class)
在网格的部分中,我需要从可用的部分中知道所选的部分

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

问题:

  • 我必须继续进行这种分解,还是必须使用单个MVC(考虑将来添加功能)

  • 如果我需要保持这种分解,有没有一种方法可以确保不同MVC之间的通信比我在快速解决方案中所做的更合适


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

    我已经将我的结构模式更改为修改后的MVC,其中视图和模型互不了解

    双方之间的所有通信都由控制器处理,因此每个控制器都需要知道关联视图所需的模型类

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

    这可能会在将来产生问题,因为模型的类引用的数量会增加,但可以通过一些工厂模式或依赖注入服务轻松解决