代理模式
1.代理模式介绍
代理模式,为其他对象提供一种代理以控制对这个对象的访问。
代理模式很好理解,就是一个类可以完成什么样的事情,但是这个类不直接去完成,而是通过另外一个中间类,由这个中间类代理这个实际类去执行一些操作。
代理模式用一个例子就很好懂了,比如学生时代,你喜欢隔壁班的婉儿妹妹,但是你害羞,不敢去主动追求婉儿妹妹,于是你就找班级里的社牛张三,代替你去追求婉儿妹妹,每天由张三代替你去给婉儿妹妹送零食,送情书等等。你就是那个实际的对象,张三就是你的代理对象,追婉儿妹妹就是你要做的操作,你让张三代替你去追婉儿妹妹,这就是代理模式的工作流程。
2.代理模式代码示例
下面以一个简单的示例介绍代理模式的使用
2.1Subject抽象类
public abstract class Subject {
public abstract void request();
}
2.2RealSubject类
public class RealSubject extends Subject{
@Override
public void request() {
System.out.println("真实的请求");
}
}
2.3Proxy代理类
public class Proxy extends Subject{
private RealSubject realSubject;
@Override
public void request() {
if (realSubject == null) {
this.realSubject = new RealSubject();
}
realSubject.request();
}
}
2.4测试类
public class MainApplication {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.request();
}
}
2.5说明
RealSubject是Subject抽象类的一个具体子类实现,此时RealSubject类里面有一个request方法想要执行,但是呢客户端不直接实例化RealSubject对象,而是间接的通过创建一个代理类Proxy来实现对RealSubject类的request方法的调用。
这样Proxy就是RealSubject的代理类了,代替RealSubject完成了客户端调用request方法的需求。
3.代理模式UML类图
4.总结
代理模式其实就是找一个人帮咱干活,java中的静态代理,动态代理,还有spring中的AOP都是代理模式的最佳实践。