软件设计模式-代理模式

代理模式
应用场景:
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.动态代理:

posted @ 2024-09-22 16:02  torrentgz  阅读(18)  评论(0)    收藏  举报