使用的场景:
demo:
服务提供者框架三大组件
组件1:服务接口,由提供者实现
组件2:提供者注册api,系统用来注册实现,让客户端访问
组件3:服务访问api,客户端获取服务的实例
可选组件4:服务提供者接口 Provider
public interface Service {
}
public interface Provider {//服务的提供者
Service newInstance();//各个厂家不同实现方式
}
public class Services {
// 私有化构造函数
private Services() {
}
private static final String DEFAULT_PROVIDER_NAME = "<def>";
// 服务对象保存器
private static final Map<String, Provider> providers = new ConcurrentHashMap<>();
public static void registerDefaultProvider(Provider p) {
registerProvider(DEFAULT_PROVIDER_NAME, p);
}
public static void registerProvider(String providerName, Provider p) {
providers.put(providerName, p);
}
//
public static Service newInstance() {
return newInstance(DEFAULT_PROVIDER_NAME);
}
public static Service newInstance(String name) {
Provider p = providers.get(name);
if (p == null) {
throw new IllegalArgumentException("no Provider registered whith name" + name);
}
return p.newInstance();//关键;和上面两个接口实现关联
}
}