【ThinkingInJava】33、动态代理机制

本文通过一个简单的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









评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值