代理模式笔记(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(){

//请求后的操作的代码

}

选择逃避,选择被动的去面对生活。

代理模式笔记(Java)

相关文章:

你感兴趣的文章:

标签云: