A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙万利 中级黑马   /  2012-12-5 14:23  /  945 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙万利 于 2012-12-6 08:29 编辑

代理的概念和作用:
可以为已经存在的多个具有相同接口的目标类的各个方法增加一些系统功能,例如:异常处理,日志,计算方法运行的时间、事务管理等等
代理类可以用来隐藏对外的原始代码体现,只提供方法即可;提高了安全性;

客户端、代理,接口,实现类之间的关系图(已经传了附件)

下面是一小段代码来体现代理:

import java.util.*;
//定义ArrayList的一个接口
interface ArrayListDemo {
//迭代元素方法
public abstract void Itera(ArrayList list);
//添加元素
public abstract ArrayList Add();
}
// 接口的实现类
class ArrayListDemoImpt implements ArrayListDemo {

//实现接口的迭代功能
public void Itera(ArrayList list) {
  Iterator it = list.iterator();
  while (it.hasNext()) {
   System.out.println(it.next());
  }
}
//实现接口的添加元素功能
public ArrayList Add() {
  ArrayList list = new ArrayList();
  for (int x = 1; x < 10000; x++) {
   list.add(x);
  }
  return list;
  
}
}
// 定义一个代理类
class ArrayListProxy implements ArrayListDemo {

ArrayListDemoImpt aldi = new ArrayListDemoImpt();
//代理调用实现类的迭代元素功能,实现迭代
public void Itera(ArrayList list) {
  long start_time = System.currentTimeMillis();
  aldi.Itera(list);
  long end_time = System.currentTimeMillis();
  System.out.println("程序迭代元素运行时间是:"+(end_time - start_time)+"毫秒");
}
//代理调用实现类方法,实现添加元素
       public ArrayList Add() {
  
       return aldi.Add();
       }
  
}
public class Test4 {
public static void main(String[] args) {
      //建立代理来的对象
  ArrayListProxy list2 = new ArrayListProxy();
  //调用代理添加功能
  ArrayList list = list2.Add();
  //调用代理的迭代功能
  list2.Itera(list);
  
}
}

Proxy(代理图解).GIF (14.56 KB, 下载次数: 19)

Proxy(代理图解).GIF

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马