`
milk_36
  • 浏览: 121379 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

温故知新--重温java Proxy

阅读更多

之前在使用spring的时候就了解过java中的代理机制,但是当时也是理解的一知半解的.今天看了组长一篇有关无等待数据库连接池的文章,里面使用到Proxy绕过Connection 的正常关闭,而把Connection 放入到队列中重复使用从而提高数据库连接数度,提高机器效率!(http://www.javagg.com/diary/88574472)

重温Proxy的作用后,感觉对以前模糊的理解有所帮助!

 

特写下一段示例代码:

interface HandleTask {
	public void open();

	public void close();
}

class WorkTask implements HandleTask {

	@Override
	public void close() {
		// TODO Auto-generated method stub

	}

	@Override
	public void open() {
		System.out.println("开门");
	}

}

 代理操作和不使用代理的区别:

public class TestProxy implements InvocationHandler {//实现InvocationHandle中invoke方法

	private HandleTask task;

	public TestProxy(HandleTask task) {
		this.task = task;
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		Object obj = null;
		if (method.getName().equals("open"))//针对代理对象各方法的操作
			System.out.println("开门了!");
		obj = method.invoke(task, args);
		return null;
	}

	public HandleTask getHandleTask() {
		return (HandleTask) Proxy.newProxyInstance(task.getClass().getClassLoader(), new Class[] { HandleTask.class }, this);
	}

	public static void main(String[] args) {
		HandleTask ht = new WorkTask();
		ht.open();
		System.out.println("/////////代理前");
		TestProxy tp = new TestProxy(ht);//把ht实例关联上代理操作
		ht = tp.getHandleTask();
//经过代理关联ht实例和之前似乎没有什么不一样,但是....		
                ht.open();
}
}

 运行结果:

开门
/////////代理前
开门了!
开门
 

看到了,ht实例在代理前后相同方法的调用,出现了不同的情况.这就是代理的杰作!

个人理解:

代理就如同对实例的监视器,当要对实例操作的时候,可以通过代理规则对其操作进行一些逻辑和干预.

就如同现在一些汽车上的GPS系统,在汽车被盗以后,可以通过远程遥控获取汽车的位置然后死锁汽车,让其小偷不能把车顺利转移!

 

 

分享到:
评论

相关推荐

    java-classic-program.rar_java经典程序

    Java经典程序是编程学习者和开发者的重要资源,尤其对于初学者而言,它们是理解Java语言特性和编程思想的宝贵教材。这个"java-classic-program.rar"压缩包包含了名为"java经典小程序.doc"的文档,我们可以从中挖掘出...

    Java实验指导书 2009

    ### Java实验指导书 2009 知识点概览 #### 一、JAVA实验指导概述 **实验目的与要求:** 本实验指导书旨在帮助学生掌握Java编程的基础知识和高级特性,通过一系列的实验任务,加深对Java语言的理解,并能够独立完成...

    JavaPPT7-14.zip

    这些PPT文件构成了一个关于Java编程的系列教程,涵盖了从基础到进阶的主题。以下是根据文件名和标签“java”推断出...通过学习这个系列,初学者可以全面掌握Java编程,而有一定经验的开发者也可以温故知新,提升技能。

    行业报告---温故知新,从 4G 看 5G.zip

    行业报告“温故知新,从4G看5G”为我们揭示了移动通信技术从4G到5G的演进历程、技术变革及其对社会经济的深远影响。这份报告深入探讨了5G的关键特性,包括超高速率、低延迟、大规模连接以及网络切片等,这些都是5G...

    ZYNQ PL 简单入门 LED例程(FPGA 简单入门 LED 例程工程)

    ZYNQ7100,PL 纯逻辑,简单入门 FPGA LED 例程 工程对应的视频教程(1.1 ZYNQ学习分享-温故知新-PL-led):https://www.ixigua.com/6878303436048335371/

    温故知新,通过学习尚学堂飞机游戏项目,理解Java语言基础知识.zip

    在本项目"温故知新,通过学习尚学堂飞机游戏项目,理解Java语言基础知识.zip"中,我们可以深入探讨Java编程语言的基础知识,并结合实际的游戏开发经验来加深理解。这是一个非常适合初学者或者想要巩固Java基础的...

    通信行业:温故知新,从4G看5G-1202-中信建投-12页.pdf

    通信行业:温故知新,从4G看5G-1202-中信建投-12页.pdf

    java 冒泡排序法 PPT文档

    冒泡排序是一种基础且经典的排序算法,主要应用于计算机科学领域,特别是在编程语言如Java中。它的名字来源于排序过程中较小的元素像气泡一样逐渐...如果你是经验丰富的开发者,回顾这些基础知识也会有助于温故知新。

    java-practice:Java练习

    在本项目"java-practice"中,我们主要关注的是Java编程语言的实践应用。这个练习集可以帮助初学者和有经验的开发者巩固Java基础知识,提升编程...对于有经验的开发者,这些练习可以帮助你温故知新,保持技能的更新。

    题库源码java-Java-Algorithm:刷过的Java算法题源码仓库

    【标题】"题库源码java-Java-Algorithm:刷过的Java算法题源码仓库" 指的是一项专门用于学习和实践Java编程语言中算法的开源项目。这个项目的目标是收集并整理开发者在刷算法题过程中编写的Java源代码,以供他人参考...

    java基础项目(35个java游戏)javalearnsa资料分享

    总的来说,这个Java基础项目提供了丰富的实践机会,可以帮助初学者巩固基础,提升编程能力,同时也能让有一定经验的开发者温故知新,深入理解Java在游戏开发中的应用。通过实际操作,我们可以更好地理解和掌握Java...

    Java编程复习代码

    在本资源"Java编程复习代码"中,作者...对于Java基础不牢固的学生,这是一个很好的温故知新的机会,可以帮助他们巩固理论知识,提升编程能力。同时,通过阅读作者的笔记,可以学习到编程思维和经验,有助于自我提升。

    java学习成套ppt

    这个压缩包中的内容旨在帮助初学者逐步掌握Java编程语言,同时也适合有一定经验的开发者温故知新或者深入特定领域。让我们逐一探讨这些文件所涵盖的知识点。 首先,我们看到的是"01firstapplication.pdf",这是Java...

    Java语言程序设计第8版中文课件

    Java语言程序设计是编程...本套中文课件涵盖了Java编程的方方面面,不仅适用于初学者,也适合有一定经验的开发者温故知新。通过系统学习和实践,你将能够熟练掌握Java语言,为成为一名优秀的Java程序员打下坚实基础。

    Building Java Programs

    综上所述,《Building Java Programs》是一本全面覆盖Java编程基础的教材,适合初学者入门,也适合有经验的开发者温故知新。通过阅读和实践书中的内容,读者可以建立起坚实的Java编程基础,为进一步学习更高级的Java...

    农林牧渔行业专题研究:温故知新,复盘上两轮生猪疫情影响-0213-广发证券-17页.pdf

    农林牧渔行业专题研究:温故知新,复盘上两轮生猪疫情影响-0213-广发证券-17页.pdf

    积分管理系统java源码-new-and-old:实习过程中的温故知新

    积分管理系统java源码 new-and-old 温故: 资源的释放问题: java中需要手动释放的资源目前接触的主要有 1)io流资源 2)jdbc资源 关闭原则主要是先开后关,从里到外。 具体实现方法为放在try-catch-finally语句块...

    java实习实训报告

    - **温故知新**:通过实习实训回顾所学知识,并结合实践加深理解。 - **培养动手能力**:提高解决实际问题的能力,尤其是编程方面的实践技能。 - **锻炼思维**:在项目开发过程中培养逻辑思维能力和问题解决能力。 -...

    jsp,servlet,filter温故知新

    本文将深入探讨这些技术,帮助开发者温故知新,理解它们的功能、工作原理以及如何在实际项目中应用。 ### JSP(JavaServer Pages) JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态内容...

Global site tag (gtag.js) - Google Analytics