我目前正在創建一盤棋,由以下類:國際象棋遊戲的設計和Singleton模式
- ChessPiece - 對於所有不同的棋子,用MovementBehaviour實例變量
- MovementBehaviour組成 - 由PawnMovementBehaviour實現的接口, KingMovementBehaviour等類定義 如何移動每個塊類型
- 器ChessBoard - 與像addPiece()/ removePiece()功能的ChessPiece [] [] 2D陣列由......組成/ replacePiece()等
- 播放 - 小類有助於關聯哪個片屬於哪個演奏人
- 遊戲 - 主要的課程首先要詢問玩家的名字和想要的棋子顏色,然後通過實例化棋盤並讓玩家移動轉過 轉到達到將軍。
我想知道如果我應該使用Singleton模式(關於ChessBoard類)?目前我不是,我正在將棋盤的實例傳遞給棋子移動功能,以便棋子可以理解其周圍環境。這是因爲當然移動被認爲是合法的,這取決於任何時候在棋盤上佔用/空的空間。
當涉及到典當時,注意MovementBehaviour:en-passant取決於對手的previoius移動。 Castling需要考慮其他因素(不能通過檢查進行城堡檢查,這兩件棋子都不得在castling之前移動)。如果我是你,我不會選擇單身。把棋盤作爲每件棋子的父對象似乎對我來說是合理的。 – Bathsheba
你希望從Singleton模式中獲得什麼?如果有的話,您的設計的靈活性和一致性會產生什麼樣的成本? – GaryF