🔁 跟单业务中常用的设计模式:
1. 观察者模式(Observer)
- 场景:一个大V下单,系统需要自动通知所有跟随者进行同步下单。
- 好处:解耦下单者与跟随者,支持灵活扩展、异步通知。
- 面试亮点:可以说你使用事件驱动 + 消息队列(如 Kafka)实现异步观察者模型。
2. 策略模式(Strategy)
- 场景:不同跟单方式(固定比例、固定数量、反向跟单等)。
- 好处:新增/修改策略不影响主业务逻辑,方便动态切换策略。
- 面试亮点:可结合工厂 + 配置中心动态加载策略。
3. 责任链模式(Chain of Responsibility)
- 场景:跟单订单的风控校验(如账户余额、风控规则、KYC状态)。
- 好处:每个处理器专注处理一个环节,便于扩展风控规则。
- 面试亮点:强调链式调用结构可热插拔。
📈 量化交易系统中常用的设计模式:
1. 策略模式(Strategy)
- 场景:不同量化策略(均线、趋势、套利、网格等)切换。
- 好处:策略解耦、便于统一调度执行。
- 面试亮点:可以提到你用配置中心或策略引擎来动态加载类。
2. 模板方法模式(Template Method)
- 场景:统一的策略执行流程,如:数据获取 → 信号判断 → 下单执行 → 风控检查。
- 好处:流程固定,步骤可扩展。
- 面试亮点:说你定义了抽象类管理主流程,子类只实现细节。
3. 命令模式(Command)
- 场景:封装订单操作(如下单、撤单、修改)为对象。
- 好处:支持操作记录、重试机制、异步处理等。
- 面试亮点:尤其适合订单落盘与交易回放,可以结合事件溯源(Event Sourcing)概念。
4. 工厂模式(Factory)
- 场景:根据配置选择不同的策略/交易通道(币安、OKX、火币等)。
- 好处:解耦对象创建与使用。
- 面试亮点:可以说你结合了反射或依赖注入容器动态注册实现类。
5. 状态模式(State)
- 场景:订单状态(等待中、执行中、失败、成功)或交易机器人状态。
- 好处:将状态逻辑封装为对象,状态切换清晰可控。
- 面试亮点:便于扩展状态机,也适合接入 WebSocket 的状态监听。
6. 装饰器模式(Decorator)
- 场景:增强策略功能(如添加日志、监控、风控、回测)。
- 好处:在不修改原策略代码的前提下进行功能增强。
- 面试亮点:可以结合 AOP 思想来讲。
7. 单例模式(Singleton)
- 场景:行情中心、交易撮合引擎等全局唯一模块。
- 好处:确保系统中只存在一个实例,节省资源。
- 面试亮点:提到线程安全懒加载实现方式或使用 IoC 容器管理。