java 静态代理模式 详解

  代理模式:为其他对象提供一种代理以控制对这个对象的访问。说白了就是"真实对象"的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途。
   代理,可以理解为 我们生活中的代购、律师、中介。把对象不必要的步骤交给其他对象来做,使本对向更加专注的完成某项工作。
   假如我要去打水,我的目的是获得水,但是必须需要一个桶来装水,桶是我不关心的,但是必须要有,

   代码实例

  1. 我先定义一个接口,有开始工作的方法
package proxy;

interface IAction {
	public void action();	
}
  1. 定义一个用户类来实现这个结口
package proxy;

public class UserAction implements IAction{
	public void action() {
		System.out.println("用户开始工作了");
	}
}
  1. 这时老板想知道你工作持续了多长时间,而你正在废寝忘食的工作,这时老板找来了一个代理,来记录你工作的时间,定义代理类
package proxy;

public class ActionProxy implements IAction{
	private IAction target; //声明被代理的对象(范围越大越好,所谓的多态)
	//创建一个构造方法
	public ActionProxy(IAction target) {
		this.target = target;
	}
	// 实现抽象方法
	public void action() {
		long startTime = System.currentTimeMillis();   //定义开始的时间戳
		target.action();
		long endTime = System.currentTimeMillis();      //定义结束的时间戳
		System.out.println("共耗时"+(endTime-startTime));
	}	
}
  1. 测试类
package proxy;

public class Test {
	public static void main(String[] args) {
		IAction user = new ActionProxy(new UserAction());
		user.action();
	}
}

   这时我们再来回顾一下定义:为其他对象提供一种代理以控制对这个对象的访问。
   和python的装饰器类似,可以扩展不同的功能,但是比装饰器功能更强大,他还可以限制对象的访问,比如上面的代理类中,记录用户执行时间时 再加入一个用户验证 ,只有通过验证的员工才可以真正的访问。

   类与接口的组合,和模板方法设计模式类似,但侧重点不一样,静态代理模式更专注与控制。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值