package internal.hw.crawler; import internal.hw.crawler.commands.*; import internal.hw.crawler.repositories.ArticleRepository; import internal.hw.crawler.views.ConsoleView; public class Main { public static void main(String[] args) { ConsoleView view = new ConsoleView(); MainController controller = new MainController(view); ArticleRepository repository = new ArticleRepository(); controller.registerCommand(new ExitCommand(view)); controller.registerCommand(new CrawlCommand(repository, view)); controller.registerCommand(new ListCommand(repository, view)); controller.registerCommand(new SaveCommand(repository, view)); controller.registerCommand(new HelpCommand(controller.getCommands(), view)); view.printSuccess("Welcome to crawler. Type `help` for a list of available commands."); while (true) { try { String line = view.readLine(); // stdin 读取异常时退出 if (line == null) { controller.handleInput(new ExitCommand(view).getName()); break; } controller.handleInput(line); } catch (Exception e) { view.printError("Unexpected error: " + e.getMessage()); } } } }