我正在为一个Uni项目设计一个弹球游戏,其中应该有两种模式:运行模式和构建器模式,从而可以设计/重新设计机器的布局.
我最初的想法是状态模式 - 然而,我担心各州之间的共同界面可能会将它们收缩为实施不适合该州的方法.
例如.在构建器模式中,设置保险杠或其他任何位置是完全合适的.但是在运行模式下,它将被实现为什么都不做或抛出异常 - 这看起来很讨厌,特别是如果有很多这样的方法.
有更好的设计吗?
你的直觉是正确的.当程序可以具有许多不同的状态时,状态模式是有用的,每个状态支持许多相同的操作.例如,绘图程序可能有许多不同的工具,但每个工具都支持类似的操作,例如将笔放下或向上,以及在2个点之间画一条线.
在你的情况下,只有2个状态,他们没有太多的行为.他们共享的主要内容是常见的GUI操作,这些操作可能已经存在于标准库中.您确实需要确保显示缓冲区之类的代码不会重复,但您可以在没有State模式的情况下执行此操作.