我试图构建一个非常简单的基于控制台的游戏,重点是使用OOP而不是过程编程,因为我打算为更复杂的项目构建代码。
我想知道是否有一种设计模式能够很好地处理这个用例:
Player方法的MakeMove()类。MakeMove()方法必须以某种方式获取用户输入,但我不想将其编码到Player类中,因为这将减少内聚和增强耦合。
我想也许让一些控制器类来处理事件的顺序,从而调用键盘输入。但是,控制器类需要能够以不同的方式处理Player的子类(例如,AI类不需要键盘输入)。
思想?
发布于 2013-11-05 04:34:28
对于web工作,我喜欢将用户输入/HTML交互组合成给定对象的一个容易解耦的组件。通常,使用所有的.click和.focus以及模糊的东西来表示一个组合框,让它触发组合框对象的revealOptions或selectOption方法等等。通过这种方式,我可以触发操作/监听对象上的事件,这些细节是独立的,并且很容易被非understood理解,同时还可以将所有这些对象打包到同一个容易移植的空间中。
本质上,您的播放器将有一个内部对象,可以很容易地交换出去,并且它的工作是与环境通信,同样也是为了让玩家以一种通用的方式响应环境中的调整。在web中,interal对象会侦听浏览器事件,然后触发外部对象API的方法,这是我们内部正在考虑的问题。然后,它将侦听一般外部对象的事件,并处理所有HTML转换垃圾--操作player对象的人不想大惊小怪地移动一个检查程序或其他东西。
它基本上是用于解耦的两组API和侦听器,但它们都插入到了相同的东西中。如果您想重写一个新的环境,您只需在构造函数或类中传递一个不同的对象或其他任何东西时,就可以将该内部对象替换为.
https://softwareengineering.stackexchange.com/questions/216514
复制相似问题