我在找到合适的模式时遇到了一些麻烦。
我有两种游戏模式的块游戏。在一种模式中,任何被移除的块都会被从屏幕顶部掉落的新块替换。在另一种模式中,移除的块被替换为从底部上升并向上推动整个场的全新块块。所以我认为最好使用策略模式来实现这一点。
现在的问题是,这个策略需要修改对游戏区域中现有块的所有位置的访问权限,但很明显,这些信息位于Strategy的用户类(Game类)中,我不能拥有循环依赖
我可以将整个字段作为参考传递,但是我还有另一个问题,即所有Block生成代码都在Game类中(在我看来应该如此)。因此,唯一想到的是将所有这些方法作为函数引用传递给我,但对我而言似乎有些过分。
那么有什么方法可以解决这个问题吗?也许我想要使用战略模式我走错了路。非常感谢帮助。
关于在类中使用两个策略模式对象的任何提示的加分点,这些对象需要访问依赖于用户类中成员的相同方法。
如果有帮助,我用Java编码
答案 0 :(得分:0)
我猜最终假设一个开箱即用的答案太复杂了。
我有点跟随Traxdata的暗示,将史密斯先生的建议实际上传递给其他对象。
我的最终解决方案包括FieldManager,Field和Strategy类。 FieldManager包含Field和Strategy实例。 Field类包含块创建代码。
因此,无论何时需要创建或删除块,相应的函数都会调用相应的策略函数并将引用传递给该字段。因此,只要策略需要在字段中创建或删除某些内容,它就可以通过字段对象完成。