设计模式-注册表(Registry)

其他对象可以通过注册对象找到公共的对象和服务。 

背景


通常,可以通过其他相关的对象定位一个对象,但某些情况下,可能没有合适的初始对象。或者只知道客户ID而没有对客户对象的引用。此时可以考虑一个全局对象-注册表。

运行机制

  • 应该从接口及实现两个方面来考虑注册表的设计。对注册表而言,在接口中使用静态方法可以被应用程序容易找到。
  • 数据的作用域决定着注册表中数据的保存方式。
  • 对于进程作用域的注册表,通常使用单子(Singleton)。
  • 线程作用域的数据时一种常见的注册表数据,如数据库连接。

使用时机

  • 注册表本质上是一个全局数据。
  • 注册表可以避免多个方法之间无谓的参数传递。
  • 注册表的缺点之一:增加新类型数据时需要修改它。
     

示例-单子注册表(java

Step1:使用一个静态变量保存唯一的示例。

Step2:所有存储在注册表中的数据都存储在这个注册表示例中

Step3: 当使用服务桩测试时,构造一个子类

示例-线程安全的注册表(java

多线程环境下,不同线程需要各自的注册表。Java提供了线程专有存储变量

Step1:使用一个静态变量保存唯一的示例。

Step2:注册表类中必须包含获取和释放注册表示例的方法。

Step3:和以前一样在注册表中保存人员查找器。

Step4:调用注册表时,在beginend方法之间就是使用注册表的全程。

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值