From d0e5d89823062e8e6bbc256a8f92384ef1e27ab3 Mon Sep 17 00:00:00 2001 From: LiuZihan <1353843969@qq.com> Date: Sun, 24 May 2026 17:44:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'project/controller'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/controller/MovieController.java | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 project/controller/MovieController.java 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