Ben*_*age 6 java oop design-patterns
我正在用Java编写一个简单的游戏,但我正在尝试用一个漂亮干净的设计做到'正确'而且没有黑客攻击.
我有两个类GamePanel接收点击和按键,Model其中包含所有实体,并负责更新.模型需要知道用户鼠标的位置,但我无法决定采用"正确"的方法.
该内部Model和每个Entity内部是否应该保留对该内容的引用GamePanel或仅缓存最后已知的鼠标位置并GamePanel定期接收更新.使用创建模型时的第一个选项,需要为其提供参考,GamePanel第二个鼠标位置将作为参数发送给World.update()方法.
这些解决方案似乎都不优雅,所以我想知道是否有一种"正确"的方式来做到这一点,我已经错过了.
谢谢,本.
在我看来,这取决于您的班级如何互动。鼠标位置的变化是否会触发 Model 类中的实体?或者 Model 类是否独立于 GamePanel 并且仅适用于鼠标位置的当前值?
如果是后者,在这种情况下,我同意杰夫在我面前所说的话。创建 GamePanel 时将其句柄传递给 Model 类,并让每个实体在需要时使用该句柄来访问鼠标位置。这样,始终使用更新的鼠标位置。
如果是前者,我建议使用观察者让模型类知道鼠标位置值何时发生变化。然后 Model 类可以使用相同的设计(即让 Model 类始终拥有 GamePanel 类的句柄)并访问 GamePanel 中的当前值。
总结一下我对你的问题的回答,我认为让 GamePanel 保存鼠标位置的值并让其他类使用 GamePanel 实例访问该信息是合乎逻辑的并且符合 OO 概念。
谢谢,罗汉。