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同样采用了服务提供者框架,后续再深入研究。

  • 相关阅读:
    C#中的多态
    反编译工具
    富文本粘贴图片
    [Silverlight入门系列]用TransformToVisual和Transform取得元素绝对位置(Location)
    Silverlight在IIS中的配置
    HubbleDotNet开源全文搜索数据库项目技术详解
    Thank you for choosing Telerik RadRichTextBox
    Asp.net读取AD域信息的方法<转>
    Sharepoint学习笔记—ECMAScript对象模型系列1、ECMAScript对象模型的引入
    SharePoint WebService
  • 原文地址:https://www.cnblogs.com/hello-yz/p/9829710.html
Copyright © 2011-2022 走看看