diff --git a/project/controller/MovieController.java b/project/controller/MovieController.java new file mode 100644 index 0000000..8a5abf6 --- /dev/null +++ b/project/controller/MovieController.java @@ -0,0 +1,43 @@ +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); + } +} \ No newline at end of file