网站seo平台,长沙市网站建设公司网,网站平台搭建要多少钱,企业网站黄页怎么做背景 Java 中区分 API 和 SPI#xff0c;通俗的讲#xff1a;API 和 SPI 都是相对的概念#xff0c;他们的差别只在语义上#xff0c;API 直接被应用开发人员使用#xff0c;SPI 被框架扩展人员使用 理解 API #xff08;Application Programming Interface#xff09; …
背景 Java 中区分 API 和 SPI通俗的讲API 和 SPI 都是相对的概念他们的差别只在语义上API 直接被应用开发人员使用SPI 被框架扩展人员使用 理解 API Application Programming Interface 大多数情况下都是实现方来制定接口并完成对接口的不同实现调用方仅仅依赖却无权选择不同实现。SPI (Service Provider Interface) 而如果是调用方来制定接口实现方来针对接口来实现不同的实现。调用方来选择自己需要的实现方。从面向接口编程说起 当我们选择在调用方 和 实现方 中间引入 接口。上图没有给出“接口”应该位于哪个“包”中从纯粹的可能性上考虑我们有三种选择 接口位于实现方所在的包中接口位于调用方所在的包中接口位于独立的包中1、接口位于【调用方】所在的包中 对于类似这种情况下接口我们将其称为 SPI, SPI的规则如下 概念上更依赖调用方。组织上位于调用方所在的包中。实现位于独立的包中。常见的例子是插件模式的插件。如 数据库驱动 Driver日志 Logdubbo扩展点开发2、接口位于【实现方】所在的包中 对于类似这种情况下的接口我们将其称作为APIAPI的规则如下 概念上更接近实现方。组织上位于实现方所在的包中。3、接口位于独立的包中 如果一个“接口”在一个上下文是API在另一个上下文是SPI那么你就可以这么组织 需要注意的事项 SPI 和 API 也不一定是接口我这里都是指狭义的具体的接口。 Java类库中的实例 Class.forName(com.mysql.jdbc.Driver);
Connection conn DriverManager.getConnection(jdbc:mysql://localhost:3306/test, root, 123456);
Statement stmt conn.createStatement();ResultSet rs stmt.executeQuery(select * from Users); 说明java.sql.Driver 是 Spicom.mysql.jdbc.Driver 是 Spi 实现其它的都是 Api。 --------------------- 作者在云端123 来源CSDN 原文https://blog.csdn.net/jyxmust/article/details/82562242 版权声明本文为作者原创文章转载请附上博文链接 内容解析ByCSDN,CNBLOG博客文章一键转载插件