API 与 SPI

    今天下午进行例会的时候,大佬分享了一下关于API与SPI的使用相关。以前只对API有所了解,对于SPI并不是很重视,今天听完之后我学习了一下,简单的了解了一点,在这里记录下来,以后有新的认识在追加。

    在网上搜到的资料大多是以Java为例,但是这种原理上的东西都是共通的。而据我现在的理解,API与SPI也可以就直接理解为接口。

    “the API is the description of classes/interfaces/methods/... that you call and use to achieve a goal

     the SPI is the description of classes/interfaces/methods/... that you extend and implement to achieve a goal.

     Put differently, the API tells you what a specific class/method does for you and the SPI tells you what you must do to conform.”

    相对来说,一个接口一般都会有一个实现者与一个调用者,而API一般是由实现者来定义,调用者直接使用API来完成功能,而不需要考虑如何去实现对应的这个功能;而SPI是一种规范,SPI会指出使用SPI的一方需要去实现的功能,而这个实现的过程由使用者自己去定义。 具体来说,API就是“+”,“-”,“*”,“÷”这种方法,当我们调用一个API“÷”时,就可以对直接两个数进行除法运算,而如果我们有一个SPI“÷”,那么我们就需要先去实现这个“÷”除法,我们需要自己去定义声明这个除法的运算过程。再简单一点说,我们就可以把API看做已经写好的函数,而SPI就是一个纯虚函数,每当我们调用它首先需要自己去将其实现。

你可能感兴趣的:(C++,代码质量优化)