package com.jason.pattern.agency;
/**
* <p>
* 代理模式:为其他对象提供一种代理以控制对这个对象的访问(中介)
* </p>
* <p>
* 抽象角色:真实对象与代理对象 的共同接口
* </p>
* <p>
* 代理对象:持有真实对象引用,可附加其他的操作(类似封装)
* </p>
* 真实角色:最终要引用的对象
*
* @author Administrator
*
*/
public interface IAgency
{
void request();
}
///
package com.jason.pattern.agency;
public class RealObj implements IAgency
{
@Override
public void request()
{
System.out.println("real subject.");
}
}
//
package com.jason.pattern.agency;
/**
* 代理角色
*
* @author Administrator
*
*/
public class AgencyObj implements IAgency
{
private RealObj rObj;
@Override
public void request()
{
if (rObj == null)
rObj = new RealObj();
System.out.println("pre request.");
rObj.request();
preHandle();
}
public void preHandle()
{
System.out.println("agence request.");
}
}
//测试
package com.jason.pattern.agency;
public class Client
{
/**
* @param args
*/
public static void main(String[] args)
{
AgencyObj a = new AgencyObj();
a.request();
}
}
//缺点:真实对象不存在如何使用代理?多个真实对象,会增加很多的类,采用动态代理解决,下一篇之-动态代理