java之服务提供者框架

服务提供者框架是指这样一个系统:多个服务提供者实现一个服务,系统为服务提供者的客户端(在类的实现中使用了API的类被称为该API的客户端)提供多个实现,并把它们从多个实现中解耦出来。

服务提供者框架中有三个重要组件:服务接口(Service Interface),由服务提供者实现;提供者注册API(Provider Registration API),这是系统用来注册实现,让客户端访问他们的;服务访问API(Service Access API),是客户端用来获取服务的实例的。

服务提供者框架的第四个组件是可选的:服务提供者接口(ServiceProviderInterface),这些提供者负责创建其服务实现的实例。如果没有服务提供者接口,实现就按照类名称注册,并通过反射方式进行实例化。

// Service provider frameworksketch

// Service interface
public interface Service {
    ...// Service-specific methods go here
}

 

// Service provider interface
public interface Provider{
    Service newService();
}

 

// Noninstantiable class for serviceregistration and access
public class Services{
    private Services(){}   //禁止实例化

    // Maps service names to services
    private static final Map<String, Provider> providers = new ConcurrentHashMap<String,Provider>();

    public static final String DEFAULT_PROVIDER_NAME ="<def>";

 

    // Provider registration API
    public static void registerDefaultProvider<Provider p>{
       registerProvider(DEFAULT_PROVIDER_NAME, p);
    }

 

    public static void registerProvider(String name, Provider p){
       providers.put(name, p);
    }

 

    // Service access API
    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 withname: " + name);
        }
       return p.newService();
    }

}


对于JDBC来说,Connection就是他的服务接口,DriverManager.registerDriver是提供者注册API,DriverManager.getConnection是服务访问API,Driver就是服务提供者接口。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值