服务提供者框架模式

Effective Java中提到了服务提供者框架, 书中是这样描述的:

服务提供者框架中有三个重要的组件: 

1)服务接口(Service Interface), 这是提供者实现;

2)提供者注册API(Provider Registration API), 这是系统用来注册实现, 让客户端访问它们的;

3)服务访问API(Service Access API), 是客户端用来获取服务实例的.

第四个组件是可选的:

4)服务提供者接口(Service Provider Interface), 这些提供者负责创建其服务实现的实例.如果没有服务提供者接口, 实现就按照类名注册, 并通过反射方式进行实例化.

书中提到了JDBC用到了服务提供者框架模式, 获得MySql数据库连接的代码如下:

Class.forName(com.mysql.jdbc.Driver.class.getName());

Connection connection = DriverManager.getConnection("jdbc://url", "username", "password");

其中, com.mysql.jdbc.Driver就是服务提供者框架中的服务提供者接口. java.sql.Connection是服务接口. DriverManager.registerDriver()是提供者注册API. DriverManager.getConnection()是服务访问API.

java.sql.Driver 接口如下:


java.sql.Driver

com.mysql.jdbc.Driver 类如下:


com.mysql.jdbc.Driver

com.mysql.jdbc.Driver实现了java.sql.Driver接口, 但是有个问题:

java.sql.Driver接口里有个方法:Connectionconnect(String url, java.util.Properties info)

throws SQLException; 但是在com.mysql.jdbc.Driver类里面没有找到这个方法的实现.

还望高手赐教.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容