java - Java如何注册一个类实例以便任何类都能找到
问题描述
假设我有一个这样的 Java 类:
public class FibSolver{
int fib(int n){
//returns n-th term of fibonacci sequence
}
}
我想注册这个类的一个实例(称为 FibService),就像 RMI 服务在注册 .stub 文件时所做的那样,以便其他需要此服务的类可以调用它来执行以下操作:
FibSolver f = (FibSolver) FindMyService("FibService");
int fib5 = f.fib(5);
但我从一开始就这样做,不想使用 RMI。
也可以有多个不同的类作为公共服务工作,所以我宁愿有一个 .stub 文件之类的东西,而不是每个类的静态实例。
我该如何注册/检索服务实例?
解决方案
如何将每个“服务”创建为单例。我会创建一个 IMyService 的接口。该接口将有一个函数getService。每个服务都将其 C'Tor 作为私有并实现 getService 方法以提供其自身的单个实例。
然后使用其字符串名称在全局地图上注册所有这些服务。map 可以是一个全局静态成员,它当然可以访问每个服务的静态单例 getter。
说得通?
推荐阅读
- .net - 如何在始终出现的 Windows 10 屏幕上显示文本?
- tensorflow - 如何在 tf.keras 中填写 ModelCheckPoint 类的文件路径参数?(无法理解纪元值和日志概念)
- python - `np.arange` 在 stop=None 时出现异常但给出意外结果?
- aws-glue - Terratest 如何触发和等待胶水作业
- javascript - 如何在 Mongoose 中等待 model.save()
- c# - ImmutableDictionary 枚举顺序
- angular - 实现相关的生命周期钩子
- django - django视图没有重定向
- qt - 如何在 QML 中找到递归重新排列的来源
- crc - 这是哪种 CRC 算法(由 BBC 微型磁带归档系统使用)?