diff --git a/src/main/java/com/example/workutils/menu/api/MenuRunner.java b/src/main/java/com/example/workutils/menu/api/MenuRunner.java index f17ec5a..68497c7 100644 --- a/src/main/java/com/example/workutils/menu/api/MenuRunner.java +++ b/src/main/java/com/example/workutils/menu/api/MenuRunner.java @@ -8,9 +8,7 @@ import com.example.workutils.menu.handler.ScanHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.util.Arrays; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Scanner; @@ -23,21 +21,15 @@ import java.util.Scanner; public class MenuRunner { /** - * 主菜单选项 - */ - private static final String[] MAIN_MENU_OPTIONS = { - "1. 关键词扫描", - "2. MyBatis导出", - "3. 批量处理", - "4. Git仓库健康检测", - "0. 退出系统" - }; - - /** - * 菜单处理器映射 + * 菜单处理器映射 (序号 -> 处理器) */ private final Map handlerMap = new HashMap<>(); + /** + * 处理器实例映射 (类 -> 实例) + */ + private final Map, AbstractMenuHandler> handlerInstanceMap = new HashMap<>(); + private final ScanHandler scanHandler; private final MyBatisHandler myBatisHandler; private final BatchHandler batchHandler; @@ -52,18 +44,34 @@ public class MenuRunner { this.batchHandler = batchHandler; this.gitHealthHandler = gitHealthHandler; + // 初始化处理器实例映射 + initHandlerInstanceMap(); // 注册菜单处理器 registerHandlers(); } + /** + * 初始化处理器实例映射 + */ + private void initHandlerInstanceMap() { + handlerInstanceMap.put(ScanHandler.class, scanHandler); + handlerInstanceMap.put(MyBatisHandler.class, myBatisHandler); + handlerInstanceMap.put(BatchHandler.class, batchHandler); + handlerInstanceMap.put(GitHealthHandler.class, gitHealthHandler); + } + /** * 注册菜单处理器 */ private void registerHandlers() { - handlerMap.put(1, scanHandler); - handlerMap.put(2, myBatisHandler); - handlerMap.put(3, batchHandler); - handlerMap.put(4, gitHealthHandler); + for (MenuItem item : MenuItem.values()) { + if (item.hasHandler()) { + AbstractMenuHandler handler = handlerInstanceMap.get(item.getHandlerClass()); + if (handler != null) { + handlerMap.put(item.getCode(), handler); + } + } + } info("菜单处理器注册完成"); } @@ -77,12 +85,12 @@ public class MenuRunner { info("启动主菜单"); while (true) { printMenuTitle("主菜单"); - displayMenu(MAIN_MENU_OPTIONS); + displayMenu(); int choice = readChoice(scanner); scanner.nextLine(); - if (choice == 0) { + if (choice == MenuItem.EXIT.getCode()) { info("用户退出系统"); System.out.println("感谢使用,再见!"); break; @@ -120,9 +128,11 @@ public class MenuRunner { /** * 显示菜单选项 */ - private void displayMenu(String[] options) { + private void displayMenu() { System.out.println("请选择操作:"); - Arrays.stream(options).forEach(System.out::println); + for (MenuItem item : MenuItem.values()) { + System.out.println(item.getDisplayText()); + } } /**