稻草软件(strawsoft)

Java开发

BlogJava 首页 新随笔 联系 聚合 管理
  0 Posts :: 6 Stories :: 0 Comments :: 0 Trackbacks

所谓代理,也可以通俗的说是包装,或者过滤。也就是在一个伪真实对象去代表真实对象去做一些事情。

举个例子:
     现在有一对双胞胎兄弟。这对兄弟外貌及其相似,以至于众人看来,是区分不出的。有一天,有个公司要约见双胞胎哥哥,
不料这个哥哥突然有事出远门了,但这次约见非常重要,于是,弟弟就代表哥哥去约见。因为弟弟和哥哥非常相似,公司
不能分辨,以为就是哥哥本人,所以,很顺利的完成了约见。

上面只是一个简单的例子,也许不过恰当(谅解。。。)

下面我用代码来演示一下这个过程:

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);
    }
}

posted on 2009-03-07 16:36 strawsoft 阅读(143) 评论(0)  编辑  收藏 所属分类: 设计模式

只有注册用户登录后才能发表评论。


网站导航: