单例多态

时间:2018-10-27 15:44:11

标签: java design-patterns design-principles

让我们假设我具有国际象棋棋盘的单例表示,它由单元格的二维数组组成。有时,我希望将该表示形式视为行板,有时视为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继承,因为它是单例的

1 个答案:

答案 0 :(得分:1)

根据定义,单例是您希望多次实例化的对象。

您可以创建抽象类Board。类CheesBoardAsGridsCheesBoardAsRowsCheesBoardAsColumns将从该类继承。 CheesBoard类应包含Board变量。

如果希望用一些数据初始化单例,则可以在getInstance方法之后用数据加载它。

CheesBoard类应包含init方法。此方法将获取Board参数并初始化Board变量:

Board board = new CheesBoardAsGrids();
CheesBoard singleton = CheesBoard.getInstance();
singleton.init(board);