首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制台键盘输入OOP

控制台键盘输入OOP
EN

Software Engineering用户
提问于 2013-11-05 02:40:43
回答 1查看 398关注 0票数 3

我试图构建一个非常简单的基于控制台的游戏,重点是使用OOP而不是过程编程,因为我打算为更复杂的项目构建代码。

我想知道是否有一种设计模式能够很好地处理这个用例:

  • 有一个具有与棋盘游戏交互的Player方法的MakeMove()类。

MakeMove()方法必须以某种方式获取用户输入,但我不想将其编码到Player类中,因为这将减少内聚和增强耦合。

我想也许让一些控制器类来处理事件的顺序,从而调用键盘输入。但是,控制器类需要能够以不同的方式处理Player的子类(例如,AI类不需要键盘输入)。

思想?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2013-11-05 04:34:28

对于web工作,我喜欢将用户输入/HTML交互组合成给定对象的一个容易解耦的组件。通常,使用所有的.click和.focus以及模糊的东西来表示一个组合框,让它触发组合框对象的revealOptions或selectOption方法等等。通过这种方式,我可以触发操作/监听对象上的事件,这些细节是独立的,并且很容易被非understood理解,同时还可以将所有这些对象打包到同一个容易移植的空间中。

本质上,您的播放器将有一个内部对象,可以很容易地交换出去,并且它的工作是与环境通信,同样也是为了让玩家以一种通用的方式响应环境中的调整。在web中,interal对象会侦听浏览器事件,然后触发外部对象API的方法,这是我们内部正在考虑的问题。然后,它将侦听一般外部对象的事件,并处理所有HTML转换垃圾--操作player对象的人不想大惊小怪地移动一个检查程序或其他东西。

它基本上是用于解耦的两组API和侦听器,但它们都插入到了相同的东西中。如果您想重写一个新的环境,您只需在构造函数或类中传递一个不同的对象或其他任何东西时,就可以将该内部对象替换为.

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/216514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档