Java 老师对MVC感到困惑?

Java 老师对MVC感到困惑?,java,model-view-controller,Java,Model View Controller,我的任务是使用MVC作为模式,用java创建一个游戏。问题是我读到的关于MVC的东西并不是老师告诉我的 我读到的是模型是信息对象,它们由控制器操纵。所以在游戏中,控制器会改变物体的位置,并检查是否有碰撞等 我的老师告诉我的是,我应该把平台通用的所有东西都放在模型中,控制器应该只告诉模型给出了哪些输入。这意味着游戏循环将在一个模型类中,但也有碰撞检查等。因此,我从他的故事中得到的是,视图是屏幕,控制器是未打印的处理者,模型是其余的 有人能给我指出正确的方向吗?一个给定的应用程序实际上有多个MVC模

我的任务是使用MVC作为模式,用java创建一个游戏。问题是我读到的关于MVC的东西并不是老师告诉我的

我读到的是模型是信息对象,它们由控制器操纵。所以在游戏中,控制器会改变物体的位置,并检查是否有碰撞等

我的老师告诉我的是,我应该把平台通用的所有东西都放在模型中,控制器应该只告诉模型给出了哪些输入。这意味着游戏循环将在一个模型类中,但也有碰撞检查等。因此,我从他的故事中得到的是,视图是屏幕,控制器是未打印的处理者,模型是其余的


有人能给我指出正确的方向吗?

一个给定的应用程序实际上有多个MVC模式的有效实现。 应用程序作为MVC应用程序的基本特征是,开发人员将功能分为三大类:模型、视图和控制器

在大多数情况下,模型包含应用程序和/或底层数据的当前状态的抽象。视图包含处理表示的所有内容。控制器通常是视图和模型之间的中间实例,反之亦然:例如,如果用户输入修改了数据模型,控制器应该应用这些更改(如果更改无效,则将其作废);另一方面,如果模型中存在一个状态,该状态被定义为导致视图的特定输出,那么控制器将强制执行此操作

然而,这些都是模糊的线条。MVC设计的适用性通常受到您使用的编程语言的限制

换句话说,你必须在某种程度上即兴发挥。尽可能合理地分离功能,但在没有意义的地方不要过度使用


一些资源:


  • 您描述的是MVP模式:您不希望您的模型与视图相关,因此您的视图(屏幕)无法直接访问您的模型。大多数情况下,它会产生更干净的代码,但这取决于您的使用情况:

    在MVC中,您可以访问视图中的模型,因此您可以使模型对象与视图紧密耦合(例如,请参见数据绑定)(也有一些优点)

    将大部分逻辑放在模型中而不是控制器中与MVC或MVP没有直接关系,而是关于领域驱动设计,这是OOP的一个重要部分:


    这是面向对象编程的最佳实践,如果您的域对象(模型)能够回答有关其包含的数据的问题,那么它必须包含实现,而不是通过贫血的域模型(由于函数编程的炒作,这在今天非常流行):

    MVC背后的基本思想是将逻辑与表示分离,只要你坚持你的逻辑[游戏循环、玩家属性、AI]和表示[生成地图、用户输入]