a) 需要有一个服务器角色,它拥有真正的功能代码方法。例如B,它提供加法服务
b) 如果想远程使用B的功能,需要知道B的IP地址
c) 如果想远程使用B的功能,还需要知道B中那个特定服务的名字
我们很自然可以想到这些,虽然不完善,但已经很接近正确的做法了。实际上RMI要得以实现还得意于Java一个很重要的特性,就是Java反射机制。我们需要知道服务的名字,但又必须隐藏实现的代码,如何去做呢?答案就是:接口!
举个例子:
public interface Person(){
public void sayHello();
}
Public class PersonImplA implements Person{
public PersonImplA(){}
public void sayHello(){ System.out.println(“Hello!”); }
}
Public class PersonImplB implements Person{
public PersonImplB(){}
public void sayHello(){ System.out.println(“Nice to meet you!”); }
}
客户端:Person p = Naming.lookup(“PersonService”);
p.sayHello();