我正在尝试制作数独游戏,并且对插入的每个数字都收集了以下验证:
- 数字必须在 1 到 9 之间;
- 编号在行中必须是唯一的;
- 编号在列中必须是唯一的;
- 子矩阵中的数字必须是唯一的。
由于我重复了太多“数字在...中必须是唯一的”规则,我做了以下设计:
- 组有3种,ColumnGroup、LineGroup、SubMatrixGroup(都实现了GroupInterface);
- GroupInterface 有一个方法
public boolean validate(Integer number)
; - 每个单元格与 3 个组相关,并且在组之间必须是唯一的,如果其中任何一个不评估为 true,则不允许编号;
- 每个单元格都是可观察的,使组成为观察者,对一次单元格更改尝试做出反应。
这很糟糕。我找不到我的设计有什么问题。我只是被它困住了。
关于如何使它发挥作用的任何想法?