模式分解————代理模式(通过java中RMI类的简单实现)

1:代理模式定义:它为另一个对象提供一个替身或占位符以控制对这个对象的访问。(通俗解释:在被访问对象前段增加控制类)

2、RMI提供了客户辅助对象和服务端辅助对象,为客户辅助对象创建和服务对象相同方法。

啥也不说了,直接上列子代码:

A:建立远程服务端接口类:

import java.rmi.*;  // 引用Java中RMI类

public interface TestServiceRemoteInt extends Remote{
 public String sayHello() throws RemoteException; // 远程方法调用必修声明RemoteException异常
}

B:建立远程服务实现类:

import java.rmi.*;
import java.rmi.server.*;

/**
* UnicastRemoteObject为java.rmi.*提供类
*
*
**/
public class TestServiceRmoteImpl extends UnicastRemoteObject  implements TestServiceRemoteInt
{

 public String sayHello() {
  return "Server say Hello";
 }
 public TestServiceRmoteImpl() throws RemoteException{}
 
 public static void main(String[] args) {
  try {
   TestServiceRemoteInt TestService = new TestServiceRmoteImpl();
   // Naming.rebind(java.rmi.*)方法(为)绑定对象到rmiregistzy中,客户端将使用注册名RemoteHello在Rmiregistzy查找
   Naming.rebind("RemoteHello",TestService)
  } catch (Exception ex){
   ex.printStackTrace();
  }
 }
}

C:客户端实现访问:

import java.rmi.*;

public class TestClient{
 public static void main(String[] args) {
  new TestClient().doTest();
 }
 
 Public void doTest(){
  try{
   // rmi://127.0.0.1/RemoteHello格式必修rmi://地址/服务定义名,其中地址可以更换
   TestServiceRemoteInt testInter = (TestServiceRemoteInt)Naming.lookup(rmi://127.0.0.1/RemoteHello);
   String Say = testInter.sayHello();
   System.out.println(s);
   
  } catch(Exception ex) {
   ex.printStackTrace();
  }
 }
}

通过上述简单示例:客户端对象通过RMI代理类(RMI Stub )访问 服务器端代理类(RMI skeleton)再访问服务器对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值