代理模式
代理模式大家都已经比较熟悉了,很多框架中也用到了代理模式。下面我们直接介绍代理模式。
代理模式,为其他对象提供一种代理以控制对这个对象的访问。
Subject类,定义了被代理对象和代理公用的接口,这样代理就可以使用了。
1 package proxy; 2 3 public abstract class Subject { 4 public abstract void request(); 5 }
RealSubject类,定义Proxy代表的真实实体
1 public class RealSubject extends Subject{ 2 @Override 3 public void request() { 4 System.out.println("真是的请求"); 5 } 6 }
Proxy类
1 public class Proxy extends Subject{ 2 private RealSubject realSubject; 3 @Override 4 public void request() { 5 if(realSubject == null){ 6 realSubject = new RealSubject(); 7 } 8 realSubject.request(); 9 } 10 }
客户端调用
1 public class MainClass { 2 public static void main(String[] args) { 3 Proxy proxy = new Proxy(); 4 proxy.request(); 5 } 6 }
代理模式很简单吧,下面我们看看代理模式的应用。
一、远程代理。也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
二、虚拟代理。是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的对象。
三、安全代理。用来控制真实对象访问时的权限,一般用于对象应该有不同的访问权限的时候。
四、智能指引。是指当调用真实对象时,代理又去做另外一些事情。如计算真实对象的引用次数,当对象没有被引用时,可以自动释放它。或当第一次引用持久化对象时,把它放到内存。他们都是通过代理访问时附加一些内务处理。
每天都要对自己清零,每天都要进步,哪怕只有一点点