第8章 设计API时要区分其目标用户群

提供给客户端代码的API与为开发商提供的API要有所不同
给用户开发者API ,为开发设计者提供注册插件扩展功能方式是SPI(Service Provider Interface)

1、C和Java语言中如何定义API和SPI

C语言中函数指针
Java中的接口

2、API演进不同于SPI

API中添加内容是容许的,移除是不容许的
SPI中添加内容是有损的,移除是可以的

3、java.io.writer 从jdk1.4到jdk1.5演进

反射解决兼容性
给客户使用的API,最好用final类,不容许继承
设计SPI时候,最好用接口,结合工厂模式,不容许代理

4、合理分解API

API也要分类
原则

把有关联的方法防止在同一个类中
对于无关的方法,不因一时找不到合适位置,随便放
把有关联的类防止在同一个包中
把一些只有特殊场景下才用到的类转移到其他地方

API集合有不同受众,要根据受众分类
api与spi间要划一条泾渭分明的界限

netbeans项目把API划分四类

  • 核心类型API
  • 支持类型API
  • 核心类型SPI
  • 支持类型SPI
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容