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

java的静态代理

时间:2014-10-13 17:01:19      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:blog   http   使用   ar   java   2014   on   问题   log   

解决问题:在多个模块要插入一段功能,比如,在不同业务处理模块中,都需要检查用户是否登录,如果不使用代理的话,每增加一个模块,就需要增加很多代码。

比如,除了判断是否登录,如果还需要增加一个记录日志的功能,那么每个模块都需要重新增加一个函数。

下面我们利用静态代理的功能来解决这个需求。

代码结构

bubuko.com,布布扣


功能函数接口

package itbuluoge.proxy;

public interface ICompent {

	public void bussiness1();
	public void bussiness2();
	public void bussiness3();
}

代理类

package itbuluoge.proxy;

public class ProxyCompent implements ICompent{
	
	private ICompent ic;
	
	public ProxyCompent(ICompent ic)
	{
		this.ic=ic;
	}

	public void validateUser()
	{
		System.out.println("验证用户...");
	}
	public void bussiness1() {
		// TODO Auto-generated method stub
		validateUser();
		ic.bussiness1();
	}

	public void bussiness2() {
		// TODO Auto-generated method stub
		validateUser();
		ic.bussiness2();
	}

	public void bussiness3() {
		// TODO Auto-generated method stub
		validateUser();
		ic.bussiness3();
	}

	
}

被代理类

package itbuluoge.proxy;

public class Compent implements ICompent{

	public void bussiness1() {
		// TODO Auto-generated method stub
		System.out.println("业务1");
	}

	public void bussiness2() {
		// TODO Auto-generated method stub
		System.out.println("业务2");
	}

	public void bussiness3() {
		// TODO Auto-generated method stub
		System.out.println("业务3");
	}
	

}

测试类

package itbuluoge.proxy;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ProxyCompent myProxy=new ProxyCompent(new Compent());
		myProxy.bussiness1();
		myProxy.bussiness2();
		myProxy.bussiness3();
	}

}

输出结果

bubuko.com,布布扣


我们可以看到,如果我们需要在很多个加入共同的函数的时候,只需要在代理类中增加即可。而且可以看出,代理类中只有自己的业务逻辑,没有其他的任何服务,服务都定义在被代理类本身。



java的静态代理

标签:blog   http   使用   ar   java   2014   on   问题   log   

原文地址:http://blog.csdn.net/itbuluoge/article/details/40046377

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