服务提供者框架模式

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 接口如下:


服务提供者框架模式_第1张图片
java.sql.Driver

com.mysql.jdbc.Driver 类如下:


服务提供者框架模式_第2张图片
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类里面没有找到这个方法的实现.

还望高手赐教.

你可能感兴趣的:(服务提供者框架模式)