Допустим, я хочу создать простую игру в крестики-нолики, и у меня есть модель игрового поля. И мой вопрос, где я должен разместить логику для управления этой платой. Например.
export class Board{
boardString: string;
rows: string[];
separator: string;
constructor(boardString: string, separator: string = '|'){
this.boardString = boardString;
this.separator = separator;
this.rows = this.boardString.split('|');
}
}
// inside model class
atIndex(index: number): string{
const atCol = index % this.rows.length;
const atRow = (index - atCol) / this.rows.length;
return this.rows[atRow][atCol];
}
isFinished(): boolean {
// check if game is finished
}
getRow(index): string{
return this.rows[index]
}
vs
// or in the Service
atIndex(index: number): string{
const atCol = index % this.boardModel.rows.length;
const atRow = (index - atCol) / this.boardModel.rows.length;
return this.boardModel.rows[atRow][atCol];
}
isFinished(): boolean{
// check if game is finished
}
getBoardRow(index): string{
return this.boardModel.rows[index];
}
Не знаю, ясно ли я выразился. Крестики-нолики это просто пример. Я хочу знать, где я должен разместить логику, отвечающую за управление свойствами модели? Я читал в документации, что вся логика должна быть внутри сервисов. Но для меня в некоторых случаях это больше подходит к классу модели (например, геттеры). Это анти-шаблон для хранения методов внутри класса модели?
- внутри модельного класса (Board)
- внутренняя служба, использующая эту модель (GameService)
- объединить два вышеперечисленных
- создать сервисы специально для этой модели (BoardService) со всеми необходимыми функциями и внедрить их в другой сервис (GameService)