Java设计模式-代理模式

74 阅读2分钟

代理模式

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都是代理模式的最佳实践。