java的静态代理

1、什么是代理模式?

比如你要买个房子的话,你一般需要去找房子中介,找到中介以后,让中介帮你去办操作,这就是代理模式!

客户端需要访问被代理类,需要先访问代理类,由代理类调用被代理类。

2、代理模式的构成

Subject(抽象主题角色):它声明了真实主题和代理主题的共同接口;

Proxy(代理主题角色):实现了抽象主题,它拥有对真实主题的引用,这样它就可以操作真实的主题对象;

RealSubject(被代理角色):实现了抽象主题,里面实现了具体的业务操作;

3、代理模式实现方式有几种?

静态代理和动态代理

4、静态代理

静态代理人为创建好代理类,静态代理的实现方式有两种:继承、实现接口

5、静态代理缺点

如果代码被代理类非常多,那么就需要创建一堆代理类,那么代码就会很冗余!这个时候就要用到动态代理啦。

实现接口形式:

手动创建抽象主题角色

public interface Subject {
	void send();
}

手动创建被代理类

public class RealSubject implements Subject {

	public void send() {
		System.out.println("实现主要业务逻辑");
	}

}

代理类创建主要是为了增强被代理类

public class SubjectProxy implements Subject{
	private RealSubject realSubject;
	public void send() {
		System.out.println("》》》》实现日志打印,或者其他操作");
		realSubject.send();
		System.out.println("》》》》实现日志打印,或者其他操作结束");
		
	}

}

接下来我们用main方法来运行一下

public class SubjectMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//新建代理类
		SubjectProxy proxy = new SubjectProxy(new RealSubject());
		proxy.send();

	}

}

打印结果为:

》》》》实现日志打印,或者其他操作
实现主要业务逻辑
》》》》实现日志打印,或者其他操作结束

实现继承方式实现静态代理:

手动创建抽象主题角色

public interface Subject {
	void send();
}

手动创建被代理类

public class RealSubject implements Subject {

	public void send() {
		System.out.println("实现主要业务逻辑");
	}

}

代理类创建主要是为了增强被代理类

public class SubjectProxy extends RealSubject{
	public void send() {
		System.out.println("》》》》实现日志打印,或者其他操作");
		super.send();
		System.out.println("》》》》实现日志打印,或者其他操作结束");
		
	}

}

接下来我们用main方法来运行一下

public class SubjectMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//新建代理类
		SubjectProxy proxy = new SubjectProxy();
		proxy.send();

	}

}

打印结果为:

》》》》实现日志打印,或者其他操作
实现主要业务逻辑
》》》》实现日志打印,或者其他操作结束

下一章:jdk动态代理模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值