代理模式(静态)

定义

是指客户端并不能直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。

提供了对目标对象的间接访问方式,即通过代理访问目标对象。如此便于在目标实现的基础上增加额外的功能操作,前拦截,后拦截等,以满足自身的业务需求,同时代理模式便于扩展目标对象功能的特点也为多人所用。

静态代理的实现比较简单。

package com.zlfan.proxy;

public interface Business {
	void coding();
}
package com.zlfan.proxy;

public class BusinessImpl implements Business {

	@Override
	public void coding() {
		System.out.println("写代码");
	}

}
package com.zlfan.proxy;

public class BusinessProxy implements Business{
	
	private Business bsimpl;
	
	public BusinessProxy(Business business){
		super();
		this.bsimpl = business;
	}
	
	@Override
	public void coding() {
		System.out.println("写代码前做...");
		bsimpl.coding();
		System.out.println("写代码后做...");
	}

}
package com.zlfan.proxy;

public class Test {

	public static void main(String[] args) {
		Business bsProxy = new BusinessProxy(new BusinessImpl());
		
		bsProxy.coding();

	}

}

运行结果

写代码前做...
写代码
写代码后做...

关键点:

  • 代理类与委托类实现同一接口。
  • 在委托类中实现功能,在代理类的方法中引用委托类的同名方法。
  • 外部类调用委托类的某个方法时,直接以接口指向,代理类的实例,这正是代理的意义所在:屏蔽。

 适用性:

Proxy模式适用于在需要比较通用和复杂的对象指针代替简单的指针的时候,常见情况有:

  • 远程代理为一个对象在不同的地址空间提供局部代表。
  • 虚代理,根据需要创建开销很大的对象。
  • 保护代理,控制对原始对象的访问,用于对象应该有不同的访问权限的时候。
  • 智能引用取代了简单的指针,它在访问对象时执行了一些额外的操作。典型用途包括:对指向实际对象的引用计数,这样当该对象没有引用时,可以被自动释放;当第一次引用一个持久对象时,将它装入内存;在访问一个实际对象前,检查是否锁定了它,以确保其他对象不能改变它。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值