慕尼黑8549860
2021-12-10 16:28:33
讓我們假設(shè)我有棋盤的單例表示,由雙維單元陣列組成。有時(shí)我希望這種表示被視為行板,有時(shí)是列,有時(shí)是網(wǎng)格,但這種情況下的每一種都必須在相同的底層單例板上工作所以我有 4 個(gè)類要實(shí)現(xiàn):class CheesBoard : singleton consist of just a stright dd array of cellsclass CheesBoardAsGrids : consist of that same cells but presented by gridsclass CheesBoardAsRows : strigtforward as above but rowsclass CheesBoardAsColumns : ... you already get it而且我不知道它們之間應(yīng)該建立什么樣的關(guān)系才能使其最具可讀性和可重用性例如:我不能從 CheesBoard 繼承,因?yàn)樗菃紊?
1 回答

aluckdog
TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
單例,顧名思義,是一個(gè)你想被實(shí)例化不超過一次的對象。
您可以創(chuàng)建抽象類 Board。該課程CheesBoardAsGrids,CheesBoardAsRows并CheesBoardAsColumns從這個(gè)類繼承。CheesBoard 類應(yīng)該包含 Board 變量。
如果你想讓你的單例用一些數(shù)據(jù)初始化,你可以在 getInstance 方法之后用數(shù)據(jù)加載它。
CheesBoard 類應(yīng)該包含 init 方法。此方法將獲取 Board 參數(shù)并初始化 Board 變量:
Board board = new CheesBoardAsGrids();
CheesBoard singleton = CheesBoard.getInstance();
singleton.init(board);
添加回答
舉報(bào)
0/150
提交
取消