考虑使用我最喜欢的示例(国际象棋)进行简单聚合:我会创建像 2D 棋子数组一样的棋盘(至少在我看来这是一个很好的解决方案)例如:
chessman [,] board=new chessman[8,8];
这意味着每个位置上都可以有一个棋子。但实际上,最多只有32个棋子。 这就是问题所在 - 类图应该显示什么,实现还是我的假设?
棋盘<>----棋子0..64还是0..32?
因为实现上肯定允许64个,而游戏逻辑不应该允许超过32个。
不,它应该是
0...64
,因为有64个ChessMan
,其中只有32个数组不为空。board
数组为空。所以我的建议是保留(跟踪)ChessMan
,并找到每个ChessMan
本身的位置。您可能还需要删除丢失的 ChessMan
。ChessMan
可能会导致在数组中设置空值,但在类图中,我们始终设置关联的实际大小。board
读取相关块并处理单词。另一个解决方案是继续跟踪位置