我的任务是使用 MVC 作为模式在 java 中创建游戏。问题是我读到的关于 MVC 的东西并不是老师告诉我的。
我读到的是模型是信息对象,它们由控制器操作。因此,在游戏中,控制器会改变对象的位置并检查是否有任何碰撞等。
我的老师告诉我的是,我应该把平台通用的所有东西都放在模型中,控制器应该只告诉模型给出了哪个输入。这意味着游戏循环将在模型类中,但也会在碰撞检查等中。所以我从他的故事中得到的是,视图是屏幕,控制器是未输入的处理程序,而模型是其余的。
有人可以指出我正确的方向吗?
我的任务是使用 MVC 作为模式在 java 中创建游戏。问题是我读到的关于 MVC 的东西并不是老师告诉我的。
我读到的是模型是信息对象,它们由控制器操作。因此,在游戏中,控制器会改变对象的位置并检查是否有任何碰撞等。
我的老师告诉我的是,我应该把平台通用的所有东西都放在模型中,控制器应该只告诉模型给出了哪个输入。这意味着游戏循环将在模型类中,但也会在碰撞检查等中。所以我从他的故事中得到的是,视图是屏幕,控制器是未输入的处理程序,而模型是其余的。
有人可以指出我正确的方向吗?
对于给定的应用程序,实际上有多个有效的 MVC 模式实现。一个应用程序作为 MVC 应用程序的基本特征是开发人员将功能分为三大类模型、视图和控制器。
在大多数情况下,模型包含应用程序当前状态和/或底层数据的抽象。视图包含处理演示的所有内容。控制器通常是视图和模型之间的中间实例,反之亦然:例如,如果用户输入修改了数据模型,控制器应该应用这些更改(如果它们无效,则将它们无效);反之亦然,如果模型中存在被定义为向视图产生特定输出的状态,则控制器将强制执行此操作。
然而,这些都是模糊的界限。MVC 设计的适用性通常受您使用的编程语言的限制。
换句话说,你必须在某种程度上即兴发挥。尽可能多地分离功能,但不要在没有意义的地方过度使用。
一些资源:
好吧,您正在描述 MVP 模式:您不希望您的模型与视图相关,因此您的视图(屏幕)无法直接访问您的模型。大多数时候,它会产生更清晰的代码,但这取决于您的使用情况:http ://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter
在 MVC 中,您可以访问视图中的模型,因此您可以使模型对象与您的视图更紧密地耦合(例如参见数据绑定)(也有一些优点)。
将大部分逻辑放在模型而不是控制器中,与 MVC 或 MVP 没有直接关系,它是关于域驱动设计的,它是 OOP 的重要组成部分:http ://en.wikipedia.org/wiki/Domain-driven_design
这是 OOP 的最佳实践,如果您的域对象(模型)可以回答有关它包含的数据的问题,那么它必须包含实现,不要通过贫血域模型(由于大肆宣传,今天非常流行)函数式编程): http: //www.martinfowler.com/bliki/AnemicDomainModel.html