package com.example.moviecli.controller; import com.example.moviecli.command.*; import com.example.moviecli.repository.MovieRepository; import com.example.moviecli.strategy.MovieStrategyFactory; import com.example.moviecli.view.ConsoleView; import java.util.HashMap; import java.util.Map; public class MovieController { private final Map commands = new HashMap<>(); private final ConsoleView view; private final MovieRepository repository; public MovieController(ConsoleView view, MovieRepository repository, MovieStrategyFactory factory) { this.view = view; this.repository = repository; register(new CrawlCommand(view, factory)); register(new AutoCommand(view, factory)); register(new ListCommand(view)); register(new SearchCommand(view)); register(new StatCommand(view)); register(new ExportCommand(view)); register(new HelpCommand(view)); register(new ExitCommand(view)); } private void register(Command cmd) { commands.put(cmd.getName(), cmd); } public void handle(String input) { if (input == null || input.trim().isEmpty()) return; String[] parts = input.trim().split("\\s+"); String cmdName = parts[0].toLowerCase(); Command cmd = commands.get(cmdName); if (cmd == null) { view.printError("未知命令:" + cmdName + ",输入 help 查看帮助。"); return; } cmd.execute(parts, repository); } }