黑马程序员技术交流社区

标题: 代理 [打印本页]

作者: yp324    时间: 2013-6-4 20:40
标题: 代理
今天看了张孝祥老师讲的代理,自己就稍稍的就理解的部分整理了一点。也举了个例子,希望可以和大家一起讨论
代理的概念和作用:
可以为已经存在的多个具有相同接口的目标类的各个方法增加一些系统功能,例如:异常处理,日志,计算方法运行的时间、事务管理等等
代理类可以用来隐藏对外的原始代码体现,只提供方法即可;提高了安全性;


代理的代码示范
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);

}
}


代理的图解

代理的图解.jpg (26.76 KB, 下载次数: 2)

代理的图解

代理的图解

作者: 袁梦希    时间: 2013-6-5 12:06
很好很好
作者: yp324    时间: 2013-6-5 12:10
以前看视频,总是反复的看,没时间逛论坛,现在要面试了,我挺有信心过的,就是技术分不够,很多是我记得笔记里的问题拿出来和大家分享和讨论。希望努力的人都有一个好的结果。版主辛苦了,谢谢你!
作者: wh963572516    时间: 2014-5-14 22:06
代理类还是不懂




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2