首先了解代理模式:
给某一个对象提供一个代理,并由代理对象控制对原对象的引用,是一种对象结构型模式。(比如某台远程服务器提供了一个功能很强大的加密算法,而现在正在开发的系统又需要使用到该算法,由于该算法位于远程服务器端,封装该算法的对象位于远程服务器的内存中,本地内存中的对象无法直接访问,因此需要通过一个远程代理的机制来实现对远程对象的操作)
subject(抽象主体角色)
声明了真实主题和代理主题的共同接口,这样一来在任何使用真实主题的地方都可以使用代理主题。客户端需要针对抽象主题角色进行编程。
Proxy(代理主题角色):
内部包含着对真实主题的引用,从而可以在任何时候操作真实主题对象。代理主题角色还可以控制对真实主题的使用,负责在需要的时候创建和删除真实的主题对象,并对真实主题对象的使用加以约束。代理角色通常在客户端调用所引用的真实主题操作之前或之后还需要执行其他操作,而不仅仅是单纯的调用真实主题对象中的操作。
RealSubject(真实主题角色):
定义了代理角色所表示的真实对象,在真实主题角色中实现了真实的业务操作,客户端可以通过代理主题角色间接调用真实主题角色中定义的方法。
代理模式的核心&