所谓代理,也可以通俗的说是包装,或者过滤。也就是在一个伪真实对象去代表真实对象去做一些事情。
举个例子:
现在有一对双胞胎兄弟。这对兄弟外貌及其相似,以至于众人看来,是区分不出的。有一天,有个公司要约见双胞胎哥哥,
不料这个哥哥突然有事出远门了,但这次约见非常重要,于是,弟弟就代表哥哥去约见。因为弟弟和哥哥非常相似,公司
不能分辨,以为就是哥哥本人,所以,很顺利的完成了约见。
上面只是一个简单的例子,也许不过恰当(谅解。。。)
下面我用代码来演示一下这个过程:
1.首先建立一个接口。
public interface IGege
{
public void proc();
}
这个接口表明了哥哥的外部特征,是公司辨别哥哥的方法。
2.建立一个真实主题(哥哥)
public class Gege implments IGege
{
public void proc()
{
//哥哥的过程。。。
}
}
3.建立个代理主题(弟弟)
public class Didi implements IGege
{
private IGege = new Gege();
public void proc()
{
//弟弟代理哥哥的过程。。。
}
}
从上面的代码可以看出,Gege和Didi都实现了IGege接口,就说明,他们同时都能够当成IGege来对待,所以让公司不能辨别出是哥哥还是弟弟。
在弟弟个对象里,还有个一真的主题,就是哥哥对象。(用于转告哥哥。。。)
4.建立公司类
public class Company
{
public void talk(IGege gege)
{
gege.proc();
....
}
}
5.测试类
public class Test
{
public static void main(String[] args)
{
Company com = new Company();
IGege gege = new Didi();
com.talk(gege);
}
}