package com.example.workutils.tool; import java.util.Scanner; /** * 工具策略接口 * 所有可插拔工具实现此接口,Spring自动发现Tool Bean */ public interface Tool { /** * 工具唯一标识(用于配置启用/禁用) * 示例: "scan", "mybatis", "batch", "git-health", "mybatis-generator" */ String getId(); /** * 菜单显示名称 * 示例: "关键词扫描", "MyBatis导出" */ String getName(); /** * 子菜单选项 * 返回空数组表示无子菜单 */ String[] getMenuOptions(); /** * 命令行模式下的命令名,如 "sql", "scan", "batch" * 返回空字符串表示不支持命令行模式 */ default String getCommandName() { return ""; } /** * 执行工具的交互会话 * * @param scanner 控制台输入 */ void execute(Scanner scanner); /** * 命令行模式执行(无交互) * 默认实现打印不支持提示 * * @param args 命令行参数(不含命令名本身) */ default void executeCommand(String... args) throws Exception { System.out.println("工具 [" + getName() + "] 不支持命令行模式"); } }