代理模式属于结构型模式,为其他对象提供一种代理以控制对这个对象的访问。
Subject 类,定义了RealSubject 和Proxy 的共用接口,这样就在任何使用RealSubject 的地方都可以使用Proxy。
代理模式上,基本上有Subject角色,RealSubject角色,Proxy角色。其中:Subject角色负责定义RealSubject和Proxy角色应该实现的接口;RealSubject角色用来真正完成业务服务功能;Proxy角色负责将自身的Request请求,调用realsubject 对应的request功能来实现业务功能,自己不真正做业务。
静态代理
1. Subject类
public abstract class Subject {
public abstract void request();
}
2. Realsubject类
public class RealSubject extends Subject {
@Override
public void request() {
System.out.println("真实请求");
}
}
3. Proxy类
public class Proxy extends Subject{
private RealSubject realSubject;
@Override
public void request() {
if (realSubject == null){
realSubject = new RealSubject();
}
realSubject.request();
}
}
4. 调用
@SpringBootTest
class ProxyDemoApplicationTests {
@Test
void contextLoads() {
Subject subject = new Proxy();
subject.request();
}
}
动态代理
详情查看 : https://blog.csdn.net/javanbme/article/details/117222419
源码
https://download.csdn.net/download/javanbme/19026515