代理模式笔记(Java)

代理模式:为其他对象提供一个代理以控制对该对象的访问。是一种对象结构型模式。

 

代理模式的种类

(1)远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这样可以隐藏一个对象存在于不同地址空间的事实。

(2)虚拟(Virtual)代理:根据需要创建开销大的对象,使得此对象只有在需要的时候才会被真正创建。

(3)保护(Protect or Access)代理:控制一个对象的权限,如果需要,可以给不同用户提供不同级别的使用权限。

(4)Cache代理:为某一目标的操作结果提供临时的储存空间,以便多个客户端可以共享这些结果。

(5)防火墙(Firewall)代理:保护目标,不让恶意用户接近。

(6)同步化(Synchronization)代理:使几个对象可以同时使用一个对象而没有冲突。

(7)自能化(Smart Reference)代理:当一个对象被引用时,提供一些额外的操作。

(8)Copy-on-Write代理:虚拟代理的一种,把复制托到只有在客户端真正需要时,才真正采取行动。可以大幅度的降低拷贝庞大实体的开销。

 

代理模式的参与者:抽象主题类(Subject),代理类(Proxy),真正主题类(RealSubject)。

抽象主题类(Subject):定义了Proxy和RealSubject的共同接口。这样使得在任何使用RealSubject的地方可以使用Proxy。

代理类(Proxy):代理类内含有真正主题类(RealSubject)的引用,从而可以在任何时候操作真正主题类(RealSubject)对象。Proxy提供一个与RealSubject相同的接口,这样代理就可以用来替代RealSubject。控制对RealSubject的创建和删除。

真正主题类(RealSubject):定义了Proxy所代表的真正实体。

 

Subject类:

public abstract class Subject{

        public abstract void request();

}

 

RealSubject类:

public class RealSubject extends Subject(){

        public RealSubject (){

              //构造函数

        }

        public void request(){

              //实现请求的代码

        }

}

 

Proxy类:

 

 

 

public class Proxy extends Subject(){

        private RealSubject  realSubject;

        public Proxy(RealSubject  realSubject){

               this.realSubject=realSubject;

 

              //构造函数

        }

        public void request(){

              //实现请求的代码

        }

 

        public void preRequest(){

 

}

              //请求前的操作的代码

        }

        public void postRequest(){

              //请求后的操作的代码

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值