代理模式的意图是:为其他对象提供一种代理以控制这个对象访问。
打个比方,有个画家非常忙,但是他的画作很出名,很多人都想买,画家没时间处理这些买卖关系。于是这个画家就聘请一个代理,作为对接想买他画的人。
proxy:代理维护一个引用使用代理可以访问实体,如果realsubject和subject的接口相同,则proxy会引用subject,其他功能取决于proxy的类型。
远程代理:负责对请求及其参数编码,向不同地址空间中的实体发送已编码的请求。
循环代理:可以缓存实体的其他信息,以便延迟对它的访问。
保护代理:检查调用者的请求是不是有所需的权限。
Subject:抽象实体接口,为Realsubject实体和proxy代理定义相同的接口,使得realsubject在任何地方都可以使用proxy访问。
realsubject:真实对象,定义Proxy。