本帖最后由 孙万利 于 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);
} } |