zoukankan      html  css  js  c++  java
  • 谈谈服务提供框架

    参考:https://blog.csdn.net/zl3450341/article/details/7227197

    组件说明
    服务接口(Service Interface ) 由系统制定的服务标准,需要提供者实现
    提供者注册API(Provider Registration API) 系统用来注册提供者的实现,让客户端访问
    服务访问API(Service Access API) 客户端用来获取服务的实例。
    服务访问API一般允许但是不要求客户端指定某种选择提供者的条件,如果没有这样的规定,API就会返回默认实现的一个实例
    服务访问API是“灵活的静态工厂”,它构成了SPF的基础
    服务提供者接口(Service Provider Interface) 由系统制定的提供者接口(可选),负责创建其服务实现的实例

    Code: 以Salt举例

    1. 定义Salt服务接口

    //service interface
    public interface Salt {
        void addIodine();
    }

    包括各种方法。

    2. Salt服务提供者注册api

    可以理解为将实现Salt服务的第三方加入到候选列表中。这一步决定是否需要实现第3步。如果没有定义Salt服务提供者接口,则可以直接注册名称,之后在第4步中通过反射的方式获得服务。

    public class SaltManager {
    
        private static final Map<String, SaltProvider> providers = new ConcurrentHashMap<String,SaltProvider>();
    
        //provider registration api
        public static void registerSaltProvider(String name, SaltProvider provider){
            providers.put(name, provider);
        }
        //service access api
        public static Salt getSalt(String name){
            SaltProvider provider = providers.get(name);
            return provider.getSalt();
        }
    }

    3. (可选)定义Salt服务提供者接口

    //service provider interface
    public interface SaltProvider {
        Salt getSalt();
    }

    4. Salt服务访问api

    由第2步的代码可以看到Salt服务访问api - getSalt(),具体就是到Map中去找第三方的实现并获得服务。

    //service access api
        public static Salt getSalt(String name){
            SaltProvider provider = providers.get(name);
            return provider.getSalt();
        }

     代码

     对于服务标准制定者,

      1. 制定服务标准
      2. 实现类似于字典的服务管理器,以及注册api
    对于服务实现厂商(第三方),
      1. 实现服务标准
      2. 自己注册到服务管理器
    对最终用户,
      1. 知道如何用即可

    JDBC, JMS同样采用了服务提供者框架,后续再深入研究。

  • 相关阅读:
    Perl正则表达式
    Apache + Perl + FastCGI安装于配置
    FastCGI高级指南
    CentOs 设置静态IP 方法
    Xtrabackup安装及使用
    在Windows环境中使用版本管理工具Git
    DBI 数据库模块剖析:Perl DBI 数据库通讯模块规范,工作原理和实例
    CentOS5.2+apache2+mod_perl2 安装方法
    Premature end of script headers 的原因
    Mysql5.5.3 主从同步不支持masterhost问题的解决办法
  • 原文地址:https://www.cnblogs.com/hello-yz/p/9829710.html
Copyright © 2011-2022 走看看