听说你还不懂 Java 的服务定位器模式(Service Locator Pattern)?

作者 : 开心源码 本文共938个字,预计阅读时间需要3分钟 发布时间: 2022-05-13 共139人阅读

1 概述

当你想使用 JNDI 查询定位各种服务时,便可考虑该模式。
因为为某个服务查找 JNDI 的代价很高,服务定位器模式(后文简称为 SLP)充分利用了缓存技术。在初次请求某服务时,服务定位器在 JNDI 中查找服务,并缓存该服务对象。当再次请求相同服务时,服务定位器会在它的缓存中查找,便可极大提高应用程序的性能。

2 构成

  • 服务(Service)
    实际解决请求的服务。对该服务的引用可在 JNDI 服务器中查到
  • Context / 初始的 Context
    JNDI Context 带有对要查找的服务的引用
  • 服务定位器(Service Locator)
    服务定位器是通过 JNDI 查找和缓存服务来获取服务的单点接触
  • 缓存(Cache)
    缓存存储服务的引用,以便复用它们
  • 用户端(Client)
    Client 是通过 ServiceLocator 调用服务的对象。

3 示例

  • UML 图设计

    image

我们将创立 ServiceLocator、InitialContext、Cache、Service 作为表示实体的各种对象。Service1 和 Service2 表示实体服务。

ServiceLocatorPatternDemo,我们的演示类在这里是作为一个用户端,将使用 ServiceLocator 来演示服务定位器设计模式。

服务定位器模式的 UML 图

3.1 服务接口Service

image

3.2 实体服务

image
image

前两主要体现接口之间的多态性,指定行为方式。

3.3 为 JNDI 查询创立 InitialContext

  • 工厂模式的应用,通过类名确定要实例化的对象。

    image

3.4 创立缓存 Cache

  • 对实体类集合进行操作,主要是在集合中 获取/增加 实体类对象。

    image

3.5 创立服务定位器

  • 使用步骤3来创立实例,使用步骤4来增加到集合,或者者从集合中获取。(缓存中没有才会创立)

    image

3.6 测试

使用 ServiceLocator 来演示服务定位器设计模式。
调用步骤5得到实体类,并执行实体类的方法。

image

  • 完整源码案例请上号:
    Wasabi1234/Java-DesignPatterns-Tuitorial/tree/master/src/main/java/com/javaedge/design/pattern/javaee/servicelocator
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 听说你还不懂 Java 的服务定位器模式(Service Locator Pattern)?

发表回复