访问用户成员的策略模式

时间:2012-03-08 07:54:54

标签: java design-patterns strategy-pattern

我在找到合适的模式时遇到了一些麻烦。

我有两种游戏模式的块游戏。在一种模式中,任何被移除的块都会被从屏幕顶部掉落的新块替换。在另一种模式中,移除的块被替换为从底部上升并向上推动整个场的全新块块。所以我认为最好使用策略模式来实现这一点。

现在的问题是,这个策略需要修改对游戏区域中现有块的所有位置的访问权限,但很明显,这些信息位于Strategy的用户类(Game类)中,我不能拥有循环依赖

我可以将整个字段作为参考传递,但是我还有另一个问题,即所有Block生成代码都在Game类中(在我看来应该如此)。因此,唯一想到的是将所有这些方法作为函数引用传递给我,但对我而言似乎有些过分。

那么有什么方法可以解决这个问题吗?也许我想要使用战略模式我走错了路。非常感谢帮助。

关于在类中使用两个策略模式对象的任何提示的加分点,这些对象需要访问依赖于用户类中成员的相同方法。

如果有帮助,我用Java编码

1 个答案:

答案 0 :(得分:0)

我猜最终假设一个开箱即用的答案太复杂了。

我有点跟随Traxdata的暗示,将史密斯先生的建议实际上传递给其他对象。

我的最终解决方案包括FieldManager,Field和Strategy类。 FieldManager包含Field和Strategy实例。 Field类包含块创建代码。

因此,无论何时需要创建或删除块,相应的函数都会调用相应的策略函数并将引用传递给该字段。因此,只要策略需要在字段中创建或删除某些内容,它就可以通过字段对象完成。