java - 关于对象实例、观察者/可观察模式和单例的 OOP 问题
问题描述
制作一个扫雷应用程序,我有一个GameGrid
类将所有正方形保存在正方形的多维数组列表中,它处理初始化正方形以及确定地雷的位置。该类Square
具有其位置(x
和y
)的变量,以及一个变量hasMine
。现在,由于某些情况的出现,我需要将一个GameGrid
实例传递给 的构造函数,Square
因为我需要访问GameGrid
. 我的问题是,这是好的设计吗?出于某种原因,我将GameGrid
实例传递给Square
just 的事实感觉不对。
我试图尝试使用 Observer/Observable 类型模式,但不幸的是没有运气。另一种选择是制作GameGrid
单身人士,只是不确定这是否是最佳选择。
我敢打赌,以前可能出现过类似的情况,只是想知道最好的解决方案是什么。
编辑:
决定澄清一些事情并澄清我遇到的实际问题。
因此,每个方块都负责在单击时(翻转时)更改自己的图标。当我想实现O-fill
单击零时的行为时会出现问题(如果您熟悉扫雷,这个概念很容易)。当点击一个零时,周围所有的零都会自动翻转过来。我需要使用GameGrid
它,而不是Square
因为Square
无法访问它周围的所有方块。
但是由于已经发布了一些评论并且我做了一些研究,我发现我认为我要么保持原样,并将所需的GameGrid
实例传递给Square
,要么我会尝试使用自定义的观察者/可观察的模式,其中更新的参数(通常来自notifyObservers(Object arg)
)将是一个自定义类,我可以使用它来保存所需的所有必需信息。
解决方案
推荐阅读
- c++ - Linux/C++ 中的 NVM 存储模拟器
- testing - 如何在 TestCafe 中使用 OR (||) 语句
- kubernetes - 是什么将 Ingress 和 Ingress Controller 联系在一起?
- ffmpeg - ffmpeg更改视频文件中的时间码元数据
- javascript - 在 innerHTML 中加载脚本:无法读取未定义的属性“长度”
- node.js - 如何正确处理 Next.js 中的私有路由?
- javascript - 拥有 UndefinedNd 的权限
- wordpress - 路由的处理程序无效 - Wordpress
- r - 从扰乱对象中提取交集列表
- rxjs - 使用同步流管理 Observable 订阅