CodeGeeX 现在支持通过中文注释一键生成标准设计模式代码,比如 Ja va 的双重检查锁单例(自动带上 volatile 和 synchronized)、Python 的观察者模式(含 ABC 抽象基类)、策略模式重构(自动生成接口与上下文),甚至还能通过 CLI 批量生成 Ja va 和 TypeScript 的多语言骨架。

你想在项目中快速落地单例、观察者这类高频设计模式,但又不想从 UML 图开始画、不熟悉模板类结构、更不愿手动补全 notifyAll 或双重检查锁的细节?CodeGeeX 能直接根据中文描述生成可运行、带注释、符合语言规范的模式实现代码。
用自然语言生成标准单例模式
这个方法特别适合 Ja va、Python 等强类型语言项目初始化阶段,可以避免手写 volatile、synchronized 时漏掉任意一个关键字导致线程不安全。
第一步:在 VS Code 中新建 Singleton.ja va 文件,顶部输入注释:// language: Ja va → 换行后写“用双重检查锁实现线程安全的单例模式,提供 getInstance() 静态方法”。
第二步:将光标置于注释末尾,按 Ctrl+Enter 触发 CodeGeeX 补全。注意观察右侧候选列表中是否出现 private static volatile Singleton instance; 声明——【缺少 volatile 会导致指令重排序,多线程下可能返回未完全构造的对象】。
第三步:点击含完整构造函数、getInstance 方法及 synchronized 块的候选方案,插入代码。
第四步:在另一文件中调用 Singleton.getInstance(),验证编译通过且无警告。
生成观察者模式的完整交互链
当你需要解耦事件发布与响应逻辑,比如订单状态变更通知库存、物流、信息三个模块,CodeGeeX 可一次性生成 Subject 抽象类、Observer 接口及具体实现类。
方法一:在 Python 文件中输入中文注释:“定义观察者模式:Subject 类维护观察者列表,支持 attach/detach/notify;Observer 是抽象基类,含 update 方法;ConcreteObserver 打印接收到的消息。”
方法二:选中上述注释 → 右键 → 选择“CodeGeeX: Generate from Comment”,等待生成结果。
生成的代码中会自动包含 from abc import ABC, abstractmethod 和 @abstractmethod 装饰器——这一步不可跳过,否则子类不会强制实现 update 方法。
将已有类快速改造为策略模式
适用于已存在一堆 if-else 判断算法分支的旧代码,想用策略模式替换但不确定如何拆分接口与上下文。
1. 复制含大量条件判断的函数(例如 calculateDiscount(price, type))到新文件
2. 选中该函数 → 按下 Alt+T(Windows/Linux)或 Alt+Option+T(Mac)启动提示模式
3. 在弹出框中选择预置模板“Refactor to Strategy Pattern”
4. CodeGeeX 会生成 DiscountStrategy 接口、FixedDiscount、PercentageDiscount 等实现类,以及 DiscountContext 上下文类
生成后立刻检查 DiscountContext.__init__ 中是否注入了 strategy 参数——【若仍用硬编码 new 实例,就失去策略模式运行时切换能力】
通过 CLI 批量生成多语言设计模式骨架
当项目需同时交付 Ja va 后端与 Vue 前端,且两端都要实现同一套状态管理逻辑(如发布-订阅),可用 CLI 统一生成。
执行命令:codegeex generate pattern --name observer --lang ja va,typescript --with-demo
命令执行后会在当前目录生成 /ja va/observer/ 和 /ts/observer/ 两个子目录,各自包含完整可运行示例。
进入 ts 目录,打开 demo.ts,确认 EventBus 类是否包含 on、emit、off 三个方法——这是前端观察者模式最简可行实现,缺一不可。
