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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yp324 中级黑马   /  2013-6-4 20:40  /  1898 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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


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

代理的图解

代理的图解

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
很好很好
回复 使用道具 举报
以前看视频,总是反复的看,没时间逛论坛,现在要面试了,我挺有信心过的,就是技术分不够,很多是我记得笔记里的问题拿出来和大家分享和讨论。希望努力的人都有一个好的结果。版主辛苦了,谢谢你!
回复 使用道具 举报
代理类还是不懂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马