代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。
UML图:
模型设计:
Subject类:
package com.cnblog.clarck; /** * Subject 类,定义了RealSubject和Proxy的共用接口, 这样就在任何使用RealSubject的地饭都可以使用Proxy * * @author clarck * */ public abstract class Subject { public abstract void request(); }
RealSubject类:
package com.cnblog.clarck; /** * 定义Proxy所代表的真实实体 * * @author clarck * */ public class RealSubject extends Subject { @Override public void request() { System.out.println("真实请求"); } }
Proxy类
package com.cnblog.clarck; /** * 代理类,保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口, 这样就可以用代理来代替实体。 * * @author clarck * */ public class Proxy extends Subject { private RealSubject mRealSubject; @Override public void request() { if (mRealSubject == null) { mRealSubject = new RealSubject(); } mRealSubject.request(); } }
Client类
package com.cnblog.clarck; /** * 测试类 * * @author clarck * */ public class Client { public static void main(String[] args) { Proxy proxy = new Proxy(); proxy.request(); } }