码迷,mamicode.com
首页 > 编程语言 > 详细

【ThinkingInJava】33、动态代理机制

时间:2015-05-17 09:20:11      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:java编程思想   类的组合   

/**
* 书本:《Thinking In Java》
* 功能:动态代理机制
* 文件:SimpleProxyDemo.java
* 时间:2015年4月15日21:41:39
* 作者:cutter_point
*/
package Lesson14TypeInformation;

import static net.mindview.util.Print.*;

interface Interface
{	//一个接口提供两个方法
	void doSomething();
	void somethingElse(String arg);
}

class RealObject implements Interface
{//实现接口
	@Override
	public void doSomething() 
	{
		print("doSomething");
	}

	@Override
	public void somethingElse(String arg) 
	{
		print("somthingElse " + arg);
	}
	
}

class SimpleProxy implements Interface
{//实现两个接口之后,在加上了一个变量
	private Interface proxied;
	
	public SimpleProxy(Interface proxied)
	{
		this.proxied = proxied;
	}
	
	public void doSomething() 
	{
	    print("SimpleProxy doSomething");	//先实现自己的功能,然后调用传进来的这个接口的功能
	    proxied.doSomething();
	}
	
	  public void somethingElse(String arg) 
	  {
	    print("SimpleProxy somethingElse " + arg);
	    proxied.somethingElse(arg);
	  }
}


public class SimpleProxyDemo 
{
	public static void consumer(Interface iface) 
	{
	    iface.doSomething();
	    iface.somethingElse("bonobo");
	}

	public static void main(String[] args) 
	{
		consumer(new RealObject());
		consumer(new SimpleProxy(new RealObject()));	//动态代理
	}

}


我就这么说了,可能是我的理解还不够深,我觉得动态代理就是类的组合的使用,用一个类里面使用了另外一个类作为私有变量,实现各种功能,同时还可以执行代理的那个类的各种功能,可以各种拦截,可以判定到底要不要执行这个成员类的方法,或者是执行那个


输出:

doSomething  obj1
somthingElse bonobo  obj1
SimpleProxy doSomething  obj1
doSomething  obj1
SimpleProxy somethingElse bonobo  obj1
somthingElse bonobo  obj1









【ThinkingInJava】33、动态代理机制

标签:java编程思想   类的组合   

原文地址:http://blog.csdn.net/cutter_point/article/details/45786277

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!