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

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


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


子衿沉夜
浏览 224回答 2
2回答

慕田峪4524236

如何将每个“服务”创建为单例。我会创建一个 IMyService 的接口。该接口将具有一个函数 getService。每个服务都将其 C'Tor 设为私有并实现 getService 方法以提供其自身的单个实例。然后使用其字符串名称在全局映射上注册所有这些服务。地图可以是一个全局静态成员,当然可以访问每个服务的静态单例吸气剂。说得通?

POPMUISE

单例是这样做的方式。一个简单的实现将是这样的: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 为不同的实例和不同的求解器分配一个字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java