UNPKG

poem_game_component

Version:

26 lines (22 loc) 926 B
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; } }