【发布时间】:2011-01-03 18:09:35
【问题描述】:
嘿,我正在用 Java 实现一个 简单 Breakout 克隆,并尝试使其符合 MVC 模式。我承认,我来自网络背景,只在 Php 框架 Symfony 中使用过 MVC,从未在桌面应用程序中使用过。所以我的问题是决定哪个实体负责哪些任务。
我将我的项目分为以下几类:
-
Breakout extends JFrame(主类)启动MainViewController并将其视图添加到内容窗格。 -
MainViewController extends TimerTask启动MainView并处理其鼠标和键盘事件。还运行游戏循环(计算游戏对象的位置和状态,即Ball、Paddle、Bricks),是不是在这个地方? -
MainView extends JPanel只是在屏幕上绘制Ball、Paddle、Bricks,这里没有逻辑。但是,它也会启动这些对象。恐怕这不正确吧?
最后是游戏元素:
-
Ball extends Ellipse2D、Paddle extends Rectangle2D和Brick extends Rectangle2D提供了在屏幕上移动它们的方法,但也在这里完成了碰撞检测。再次,我怀疑这是正确的位置,将其移至控制器?
模型是什么?我想,正是这些游戏元素,因为它们代表了游戏期间唯一更改的数据。但这些都是控制器元素,因为它们也提供碰撞检测逻辑。它们最好的一点是,它们是在 view 类中启动的。我敢肯定,我的设计决策出了点问题。
【问题讨论】:
标签: java model-view-controller