首页 > 解决方案 > 关于对象实例、观察者/可观察模式和单例的 OOP 问题

问题描述

制作一个扫雷应用程序,我有一个GameGrid类将所有正方形保存在正方形的多维数组列表中,它处理初始化正方形以及确定地雷的位置。该类Square具有其位置(xy)的变量,以及一个变量hasMine。现在,由于某些情况的出现,我需要将一个GameGrid实例传递给 的构造函数,Square因为我需要访问GameGrid. 我的问题是,这是好的设计吗?出于某种原因,我将GameGrid实例传递给Squarejust 的事实感觉不对。

我试图尝试使用 Observer/Observable 类型模式,但不幸的是没有运气。另一种选择是制作GameGrid单身人士,只是不确定这是否是最佳选择。

我敢打赌,以前可能出现过类似的情况,只是想知道最好的解决方案是什么。

编辑:

决定澄清一些事情并澄清我遇到的实际问题。

因此,每个方块都负责在单击时(翻转时)更改自己的图标。当我想实现O-fill单击零时的行为时会出现问题(如果您熟悉扫雷,这个概念很容易)。当点击一个零时,周围所有的零都会自动翻转过来。我需要使用GameGrid它,而不是Square因为Square无法访问它周围的所有方块。

但是由于已经发布了一些评论并且我做了一些研究,我发现我认为我要么保持原样,并将所需的GameGrid实例传递给Square,要么我会尝试使用自定义的观察者/可观察的模式,其中更新的参数(通常来自notifyObservers(Object arg))将是一个自定义类,我可以使用它来保存所需的所有必需信息。

标签: javaoop

解决方案


推荐阅读