You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

库API设计中用户需实现子类或函数的模式是否有特定称谓?

这种模式的常见名称及辨析

你提到的这种「库定义抽象契约(基类/接口),用户实现具体逻辑后将实例交还给库执行」的模式,有几个常用的名称,我帮你梳理清楚:

1. Service Provider Pattern(服务提供者模式)

你提到Java的SPI(Service Provider Interface)是这个模式的标准化实现,但其实这个模式本身并不局限于Java或插件架构。和纯插件架构的区别在于:

  • 插件架构通常是动态加载外部组件(比如从jar/动态库加载),而这个模式更侧重代码层面的契约实现——用户直接在业务代码里实现抽象类/接口,把实例传给库,不需要额外的动态加载机制。
  • 很多非Java的库也在使用这个模式,只是没叫「SPI」而已,比如Python里的抽象基类(ABC)场景,用户继承ABC实现方法后传给框架。

2. Strategy Pattern(策略模式)

如果你的场景是:库提供核心逻辑,用户实现的子类是不同的「策略」(比如不同的数据源读取方式、不同的计算规则),库根据用户传入的策略实例执行对应逻辑,那这完全符合策略模式的定义。策略模式本质就是通过抽象接口封装可变行为,让用户可以替换不同的实现。

3. Callback Pattern(回调模式)

虽然回调常和单独的函数关联,但在面向对象场景下,「实现抽象类/接口并传递实例」其实是对象式回调的一种形式——库在执行过程中会回调你实现的方法。比如很多GUI框架里的事件监听器,就是用户实现监听器接口,传给组件,组件触发事件时调用监听器的方法,这和你说的场景一致。

背后的设计原则:Hollywood Principle(好莱坞原则)

不管叫什么模式,这种设计背后都是遵循「不要调用我们,我们会调用你」的好莱坞原则,也就是控制反转(IoC)的一种体现——把业务逻辑的控制权交给库,用户只需要实现约定好的接口即可。

另外补充一点:有些文档可能会笼统地称之为**「用户扩展点模式」**,但这不是一个正式的GoF设计模式名称,只是一种描述性的说法。

内容的提问来源于stack exchange,提问作者JoeZuntz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:42:32