首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java如何注册一个类实例,以便任何类都可以找到

Java如何注册一个类实例,以便任何类都可以找到
EN

Stack Overflow用户
提问于 2018-10-07 03:27:02
回答 2查看 1K关注 0票数 3

假设我有一个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文件这样的东西,而不是每个类的静态实例。

如何注册/检索服务实例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-07 03:53:40

如何将每个“服务”创建为singleton。我会创建一个IMyService的接口。该接口将具有一个函数getService。每个服务都将其C‘to作为私有,并实现getService方法来提供其自身的单个实例。

然后使用其字符串名称在全局映射上注册所有这些服务。map可以是一个全局静态成员,它当然可以访问每个服务的静态单调getter。

合乎道理?

票数 2
EN

Stack Overflow用户

发布于 2018-10-07 09:51:40

Singleton就是这样做的。一个简单的实现如下所示:

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为不同的实例以及可能不同的求解器分配字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52682613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档