我最近切換到 OOP 范式。我對它的架構有疑問。我在網上搜索了高低,只是設法進一步混淆。出于學習目的,我正在制作一個壟斷游戲。我的架構如下:
export class Monopoly {
constructor() {
this.players = new PlayerContoller();
this.board = new Board();
this.dice = new Dice();
this.piece = new Piece();
}
然后在這些物件中實體化其他物件,例如 Property Utility Station、Square、Chance、Community chest 等。
我的問題是圍繞玩家控制器。需要嗎?這就是它包含的內容
import { Player } from "./Player.js";
export class PlayersContoller {
constructor() {
this.players = [];
this.playerTurn = 0;
}
addPlayer(piece) {
const player = new Player(piece);
this.players.push(player);
}
getCurrentPlayer() {
return this.players[this.playerTurn];
}
changePlayersTurn() {
this.playerTurn ;
if (this.playerTurn === this.players.length) {// if the player reaches above the number of players its reset to 0
this.playerTurn = 0;
}
}
getAllPlayersObjects() {
return this.players;
}
}
這樣做的目的是讓我不必將這些方法直接存盤在主壟斷類中,也不必將玩家陣列存盤在主壟斷類中。我需要在播放器上呼叫的任何方法(例如 increaseMoney())都存盤在 Player 類中,這些物件存盤在 player 陣列中,它是 PlayerController 類的屬性。playerController 類只是為了控制輪到誰并找到當前播放器,這樣我就可以從播放器類呼叫它的方法,例如再次 increaseMoney(),或者將資料傳遞到我的視圖中(我使用的是 MVC 模式)。
這些控制器類是常見的,因為沒有大的主類,還是我最好將陣列作為屬性存盤在 Monopoly 類中并直接從 Monopoly 類呼叫方法?
uj5u.com熱心網友回復:
我會打電話給那個班級PlayerCircle(甚至Table)。定義功能不僅在于它擁有一組玩家——你不需要額外的類——而是它保持輪到誰的狀態。
鑒于此,我認為這是模型的一部分,而不是控制器。在經典 MVC 中,控制器是將視圖與模型連接起來,特別是與在模型上執行操作的方法連接起來。你PlayersController不這樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/507297.html
標籤:javascript 班级 哎呀 模型视图控制器 设计模式
