为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

子衿沉夜 2021-11-03 11:00:55
假设我有一个这样的 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 方法以提供其自身的单个实例。

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

说得通?


查看完整回答
反对 回复 2021-11-03
?
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 为不同的实例和不同的求解器分配一个字符串。


查看完整回答
反对 回复 2021-11-03
  • 2 回答
  • 0 关注
  • 223 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信