假设我有一个这样的 Java 类:public class FibSolver{ int fib(int n){ //returns n-th term of fibonacci sequence }}我想注册这个类的一个实例(称为 FibService),就像注册 .stub 文件时 RMI 服务所做的那样,以便其他需要这个服务的类可以调用它做这样的事情:FibSolver f = (FibSolver) FindMyService("FibService");int fib5 = f.fib(5);但我从一开始就这样做,不想使用 RMI。也可以有多个不同的类作为公共服务工作,所以我宁愿拥有 .stub 文件而不是每个类的静态实例。如何注册/检索服务实例?
2 回答
慕田峪4524236
TA贡献1875条经验 获得超5个赞
如何将每个“服务”创建为单例。我会创建一个 IMyService 的接口。该接口将具有一个函数 getService。每个服务都将其 C'Tor 设为私有并实现 getService 方法以提供其自身的单个实例。
然后使用其字符串名称在全局映射上注册所有这些服务。地图可以是一个全局静态成员,当然可以访问每个服务的静态单例吸气剂。
说得通?
POPMUISE
TA贡献1765条经验 获得超5个赞
单例是这样做的方式。一个简单的实现将是这样的:
public class FibSolver {
private static FibSolver instance;
public static FibSolver getInstance() {
if (instance == null) {
instance = new FibSolver();
}
return instance;
}
private FibSolver() {
}
int fib(int n){
//returns n-th term of fibonacci sequence
}
}
您可以通过调用获取实例:
FibSolver f = FibSolver.getInstance();
改进的版本可以使用静态 HashMap 为不同的实例和不同的求解器分配一个字符串。
添加回答
举报
0/150
提交
取消