Синглтон Полиморфизм - PullRequest
0 голосов
/ 27 октября 2018

Давайте предположим, что у меня есть одноэлементное представление шахматной доски, состоящей из двух ячеек массива с двумя размерами. Иногда я хочу, чтобы это представление рассматривалось как доска строк, иногда как столбцы, иногда как сетки, но каждый из этих случаев должен работать на одном и том же базовом синглтоне доски

Итак, я должен реализовать 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 голосов
/ 27 октября 2018

Синглтон по определению - это объект, экземпляр которого вы хотите создать не более одного раза.

Вы можете создать абстрактный класс Board. Классы CheesBoardAsGrids, CheesBoardAsRows и CheesBoardAsColumns будут унаследованы от этого класса. Класс CheesBoard должен содержать переменную Board.

Если вы хотите, чтобы ваш синглтон был инициализирован с некоторыми данными, вы можете загрузить его с данными после метода getInstance.

Класс CheesBoard должен содержать метод init. Этот метод получит параметр Board и инициализирует переменную Board:

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