现在的位置: 首页 > 综合 > 正文

代理模式的概念及代码例子

2014年09月05日 ⁄ 综合 ⁄ 共 1185字 ⁄ 字号 评论关闭

代理模式:为其他对象提供一种代理以控制对这个对象的访问。

代理模式是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,Proxy 是代理的意思,我们
也许有代理服务器等概念,代理概念可以解释为:在出发点到目的地之间有一道中间层,意为代理.

我们以火车站买车票为例子:里面涉及到几个角色。你:执行角色,买车票:抽象角色,黄牛党;代理角色。还有几个主题:买车票是主题,车站买车票是真实的主题,而黄牛党去车站替你买车票是做的代理。

/**

主题:买车票

**/

public interface Subject { //抽象主题
public abstract void sealTicket();

}

/**

真实主题:火车站-售票

**/

public class RealSubject implements Subject {//真实主题
@Override
public void sealTicket() {
// TODO Auto-generated method stub
System.out.println(this.getClass().getName()+":火车站-买票!");
}
}

/**

代理

**/

public class ProxySubject implements Subject {

     private  Subject subject;

    ProxySubject(Subject subject){

    this.subject = subject;

   }

  @Override

  public void sealTicket() {
// TODO Auto-generated method stub

         inStation();
this.subject.sealTicket();

        outStation();

}

  private void inStation(){

    System.out.println(this.getClass().getName()+":黄牛党,拿着你的钱,去大厅买车票!");

  }

private void outStation(){

    System.out.println(this.getClass().getName()+":黄牛党买好车票从大厅出来,把车票交给你!");

  }

}

/**

测试类

**/

public class TestProxy{

   public static void main(String args[]){

   Subject  subject = new ProxySubject(new RealSubject());

    subject.sealTicket():

   }

}

结果如下:

test.ProxySubject::黄牛党,拿着你的钱,去大厅买车票!

test.RealSubject:火车站-买票!

test.ProxySubject:黄牛党买好车票从大厅出来,把车票交给你!


     

【上篇】
【下篇】

抱歉!评论已关闭.