设计模式(12)--代理模式

本文详细介绍了代理模式的基本原理,包括静态代理的应用场景与实现方式,并通过一个简单实例展示了如何使用代理模式来增强原有类的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代理模式的理论在前面的一条博文 JAVA基于反射动态代理  说过了,因为这篇代理模式更侧重说一些理论性的东西,所以侧重点放在了静态代理上,九层之台,起于垒土,明白了静态代理也就很容易理解动态代理了(动态代理是在静态代理的基础上加上了编程的的智慧和技巧)。

代理模式中代理类和真实类要实现相同接口,为什么要实现相同接口呢?这要从代理模式的目的说起,它的目的就是代理真实类,当然,想代理真实类也不能什么都不做上去就代理,当然要先和真实类拉近一下关系了。就好像我们IT行业某些著名打印机、交换机厂商需要代理,也不是随便谁都能代理销售他们的产品的,需要得到这些厂商的认可才行,

而我们代理模式中,真实类怎样才觉得代理类有资格代理它而不显唐突呢,实现共同接口,好了,实现了共同接口就是自家人了,可以代理了。

代理模式UML类图:


实例代码:

接口类(真实类和代理类共同接口):

public interface Interface {

	void method();
}

真实类(被代理的类):

/*****
 * 真实类(被代理类)
 * @author wjw
 *
 */
public class RealClass implements Interface{

	@Override
	public void method() {
		// TODO Auto-generated method stub
		System.out.println("系统运行");
	}

}

代理类:


/*****
 * 代理类
 * @author wjw
 *
 */
public class Proxy implements Interface{

	private Interface inter = new RealClass();;

	@Override
	public void method() {
		// TODO Auto-generated method stub
		System.out.println("权限验证!");
		inter.method();
	}

}

Main类:

public class Main {
	public static void main(String[] args) {
		Proxy proxy = new Proxy();
		proxy.method();
	}
}

运行结果:

权限验证!
系统运行


如上实例代码所示,代理模式的产生也是有目的的,就是我们通过代理类可以增加真实类不具有的功能,比如权限验证,比如日志等。这样扩展起来也很容易,对现有代理类不满意,想增加功能,再扩展一个代理类,实现相同接口即可。

以上只是很简单的代理模式说明,在真实应用中代理模式用处非常多,功能也非常强大,需要好好体会琢磨才能明白代理模式的牛X之处。敲打


如有错误,欢迎指正

end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值