代理这个名词在当今社会是比较普遍存在的,这是现在非常流行的词语。法院打官司也可以使用代理人,明星名人找经纪人代理处理工作事务等等。
我们会发现代理人和被代理的都有一个共性,都是人!哈哈,说笑了,我们还是继续说代理模式吧。
代理类和目标类都实现了相同的接口类,代理类负责目标类的功能调用。
上代码,实现的是一个演员与经纪人的关系。
//演员接口类
public interface IActor
{
void performance();
}
//演员实现类
public class Actor implements IActor
{
@override
public void performance()
{
System.out.println("某演员参演");
}
}
//代理人类
public class ActorProxy implements IActor
{
private IActor actor;
public ActorProxy(IActor actor)
{
this.actor = actor;
}
@override
public void performance()
{
Random rand = new Random();
if(rand.nextBoolean())
{
System.out.println("安排演员演出");
actor.performance();
}
else
{
System.out.println("演员不演出");
}
}
}
这样在客户端就只需要跟代理人打交道了
public class Test
{
public static void main(String[] args)
{
IActor actor = new Actor();
ActorProxy proxy = new ActorProxy(actor);
System.out.println("有客户请演员演出");
proxy.performance();
}
}