public class Services {
private Services(){}
private static final Map<String,Provider> providers = new ConcurrentHashMap<String,Provider>();
public static final String DEFAULT_PROVIDER_NAME = "<def>";
//provider register Api 提供者注册API,系统用来注册实现,让客户端访问它们的
public static void registerDefaultProvider(Provider p){
registerProvider(DEFAULT_PROVIDER_NAME,p);
}
public static void registerProvider(String name,Provider p){
providers.put(name,p);
}
public static Service newInstance(){
return newInstance(DEFAULT_PROVIDER_NAME);
}
//service access api 客户端用来获取服务的实例的
public static Service newInstance(String name){
Provider p = providers.get(name);
if (p == null){
throw new IllegalArgumentException("No provider registered with name:"+name);//IllegalArgumentException此异常表明向方法传递了一个不合法或不正确的参数
}
return p.newService();
}
}
//服务接口:提供者实现
interface Service{
// ...
}
//提供者负责创建其服务实现的实例
interface Provider{
Service newService();
}
对于JDBC来说,
服务接口:Connection
提供者注册API:DriverManager.registerDriver
服务访问API:DriverManager.getConnection
服务提供者接口:Driver