Skip to content

🧩 Main ​

入口层 驱动类

程序的驱动类(driver class),根据命令行参数把控制流分发到 GUI 或 CLI 模式。

📁 源码:ClassySharkWS/src/com/google/classyshark/Main.java   📦 包:com.google.classyshark

职责 ​

Main 是 ClassyShark 可执行 JAR 的入口点(build.gradle 中 Main-Class: com.google.classyshark.Main)。它读取命令行参数,判断用户要图形界面还是命令行模式,然后把控制流交给对应的模式处理器。它还负责在启动时触发一次匿名使用统计上报(Analytics.INSTANCE.addActivation())。

关键方法 / 字段 ​

名称类型说明
main(String[] args)static voidJAR 入口,分发到 GUI/CLI
isGui(List<String>)private static boolean判断是否走 GUI:无参数或首参为 -open
argsAsArrayList<String>命令行参数列表

工作流程 ​

mermaid
flowchart TD
    A["java -jar ClassyShark.jar ...args"] --> B["main(args)"]
    B --> C["Analytics.addActivation() 上报启动"]
    C --> D{"isGui(args)?"}
    D -- "无参数 / -open" --> E["GuiMode.with(args)"]
    D -- "其他" --> F["CliMode.with(args)"]

设计要点 ​

  • 入口分发极简 — Main 只做三件事:解析参数、上报、分发,无业务逻辑。
  • GUI 判定规则 — 无参数(直接双击 jar)或首参 -open 走 GUI;其余走 CLI。这让 java -jar ClassyShark.jar 默认开图形界面,对桌面用户友好。
  • 私有构造函数 — private Main() 防止实例化,纯静态工具类风格。
  • 模式分离 — GuiMode 与 CliMode 完全独立,互不依赖,便于维护与各自演进。

协作关系 ​

  • 调用 → [[GuiMode]](GUI 模式入口)
  • 调用 → [[CliMode]](CLI 模式入口)
  • 调用 → [[Analytics]](启动上报)
  • 引用 → [[Version]](版本号,供 Analytics 上报)

已知问题 / TODO ​

  • 无(入口类职责清晰)。

相关文档 ​

最后更新:

基于 Apache 2.0 协议发布