让我们假设我具有国际象棋棋盘的单例表示,它由单元格的二维数组组成。有时,我希望将该表示形式视为行板,有时视为colmumns,有时视为网格,但是每种情况都必须在相同的基础单层板上工作
所以我有4个要实现的类:
class CheesBoard : singleton consist of just a stright dd array of cells
class CheesBoardAsGrids : consist of that same cells but presented by grids
class CheesBoardAsRows : strigtforward as above but rows
class CheesBoardAsColumns : ... you already get it
我不知道它们之间应该建立什么样的关系以使其最易读和可重用
例如:我不能从CheesBoard继承,因为它是单例的
答案 0 :(得分:1)
根据定义,单例是您希望多次实例化的对象。
您可以创建抽象类Board。类CheesBoardAsGrids
,CheesBoardAsRows
和CheesBoardAsColumns
将从该类继承。
CheesBoard类应包含Board变量。
如果希望用一些数据初始化单例,则可以在getInstance方法之后用数据加载它。
CheesBoard类应包含init方法。此方法将获取Board参数并初始化Board变量:
Board board = new CheesBoardAsGrids();
CheesBoard singleton = CheesBoard.getInstance();
singleton.init(board);