poem_game_component
Version:
26 lines (22 loc) • 926 B
text/typescript
import { Game } from '../domain/Game';
import { GameType } from '../domain/enums/GameType';
import { GameRepository } from '../domain/interfaces/GameRepository';
import { v4 as uuidv4 } from 'uuid';
import { RuleFactory } from './RuleFactory';
export class GameFactory {
constructor(
private gameRepository: GameRepository,
private ruleFactory: RuleFactory
) {}
async createGame(gameType: GameType, initialCondition: string): Promise<Game> {
// 使用规则服务验证初始条件
const rule = this.ruleFactory.createRule(gameType);
const isValid = await rule.validateInitialCondition(initialCondition);
if (!isValid) {
throw new Error('无效的初始条件');
}
const game = new Game(uuidv4(), gameType, initialCondition);
await this.gameRepository.save(game);
return game;
}
}