Model view controller 谁负责MVC中单个模型组件的初始化

Model view controller 谁负责MVC中单个模型组件的初始化,model-view-controller,single-responsibility-principle,Model View Controller,Single Responsibility Principle,我找不到我问题的明确答案 在MVC中,模型、视图和控制器是完全不同的。所以通常我会创建一个控制器对象,它保存模型和视图的实例。模型和视图彼此不了解任何信息,因此它们必须通过控制器进行通信 例如,当我为游戏模型编写代码时,有一些类,比如“GameBoard”,它通常为类型为“Tile”的对象保存一个对象容器。。。“Player”或“Brick”可以是继承的“Tile”类 例如,在开始时,第一级必须有一些砖块,所以我必须在某个地方初始化它,我通常在游戏板的构造函数中进行初始化 告诉“游戏板”——构造

我找不到我问题的明确答案

在MVC中,模型、视图和控制器是完全不同的。所以通常我会创建一个控制器对象,它保存模型和视图的实例。模型和视图彼此不了解任何信息,因此它们必须通过控制器进行通信

例如,当我为游戏模型编写代码时,有一些类,比如“GameBoard”,它通常为类型为“Tile”的对象保存一个对象容器。。。“Player”或“Brick”可以是继承的“Tile”类

例如,在开始时,第一级必须有一些砖块,所以我必须在某个地方初始化它,我通常在游戏板的构造函数中进行初始化

告诉“游戏板”——构造器它应该持有哪些对象,这通常是一种好的做法吗

我这样问是因为我读到了一些关于“单一责任原则”的东西。。。那么,模型应该只是模型(而不是其他)而不关心自身的初始化吗

或者这是控制器的“初始化”任务?如果是,我是否应该将一个控制器划分为多个控制器,负责其“单一责任”?或者在模型和视图之间有一个控制器就足够了吗

谢谢

在MVC中,模型、视图和控制器是完全不同的。所以 通常我会创建一个控制器对象,其中包含 模型和视图。模型和视图互不了解 因此,他们必须通过控制器进行通信

我不知道你这是什么意思。我不会说控制器的模型和视图是相互作用的,它们实际上从未在这里相遇。模型和视图在视图内部通信

例如,当我为游戏模型编写代码时,有 类,如“GameBoard”,它通常包含一个对象容器 对于“平铺”类型的对象。。。“玩家”或“砖块”可以是继承的 “瓷砖”类别

例如,在开始时,第一层必须有一些砖块,所以 我必须在某个地方初始化它,我通常在 游戏板的构造函数

告诉“游戏板”构造器通常是一种好的做法吗 它应该持有哪些物品

是的,就是这样。只允许非模型对象在构造函数内部接收值是一种很好的做法。如果你想认真对待这一做法,你应该补充:

private set;
类属性,使其不可变。这将限制您将此对象修改为构造函数和仅修改构造函数的能力

我这样问是因为我读到了一些关于“单一责任”的东西 原则“。。。那么,模型是否应该只是模型(而不是模型) 否则)而不关心自身的初始化

对于如何在模型中存储数据,模型的规则应该不那么严格。为了可读性,您可以添加不同的构造函数,以允许您在一行上填充模型,但这不是必需的

或者这是控制器的“初始化”任务?如果是, 我应该将一个控制器划分为多个控制器吗 照顾它的“单一责任”?还是一个控制器就足够了 在模型和视图之间

是的,控制器的唯一任务应该是与视图通信。视图需要数据,因此控制器将填充模型,并与视图进行通信。这应该是它正在做的一切

控制人应该只承担一项责任,但这并不一定意味着它只做一两件事。这取决于程序员对其控制器范围的判断


我希望这对您有所帮助。

谢谢,这非常有帮助!