代理模式
应用场景:
1.静态代理:
用户希望通过代理类的对象调用真实类的对象的方法,并且希望在调用真实类的对象之前,自定义进行某些操作。
其实想要实现这样的操作有很多种方法,继承,装饰者模式都可以,但是静态代理考虑到只是调用真实类的对象的一个方法而已,没必要使用装饰者模式(将真实类对象作为自己的成员),这样可以将代理类和真实类独立开来。具体做法:让代理类和真实类都实现同一个接口,然后代理类在重写接口的方法时自行添加某些操作。
// 抽象接口
public interface Subject {
void request();
}
// 真实对象
public class RealSubject implements Subject {
@Override
public void request() {
System.out.println("RealSubject: Handling request.");
}
}
// 代理对象
public class Proxy implements Subject {
private RealSubject realSubject;
@Override
public void request() {
if (realSubject == null) {
realSubject = new RealSubject();
}
System.out.println("Proxy: Before request.");
realSubject.request();
System.out.println("Proxy: After request.");
}
}
// 客户端
public class Client {
public static void main(String[] args) {
Subject proxy = new Proxy();
proxy.request(); // 客户端只与接口Subject打交道
}
}
2.动态代理:
标签:软件设计,request,代理,模式,Proxy,realSubject,public,Subject From: https://www.cnblogs.com/torrentgz/p/18425418