主页 > 知识库 > 网络编程 > JSP/Java >

java设计模式---静态代理

来源:中国IT实验室 作者:佚名 发表于:2013-05-15 14:32  点击:
代理:一个角色代表别一个角色来完成某些特定的功能。 比如:生产商,中间商,客户这三者这间的关系 客户买产品并不直接与生产商打交道,也不用知道产品是如何产生的,客户只与中间商打交道,而中间商就可以对产品进行一些包装,提供一些售后的服务。 代理模
 代理:一个角色代表别一个角色来完成某些特定的功能。  比如:生产商,中间商,客户这三者这间的关系
  客户买产品并不直接与生产商打交道,也不用知道产品是如何产生的,客户只与中间商打交道,而中间商就可以对产品进行一些包装,提供一些售后的服务。
  代理模式有三个角色: 1. 抽象主题角色 2. 代理主题角色 3. 实际被代理角色
  下面我们来个一个静态代理的实现。
  我以一个坦克为例。
  抽象主题角色:Moveable
  [java]
  package com.gjy.proxy;
  public interface Moveable {
  void move();
  }
  package com.gjy.proxy;
  public interface Moveable {
  void move();
  }
  代理主题角色:TanktimeProxy
  [java]
  package com.gjy.proxy;
  public class TanktimeProxy implements Moveable{
  private Moveable t;
  public TanktimeProxy(Moveable t) {
  super();
  this.t = t;
  }
  @Override
  public void move() {
  long time1 = System.currentTimeMillis();
  System.out.println("time1="+time1);
  t.move();
  long time2 = System.currentTimeMillis();
  System.out.println("time2="+time2);
  System.out.println("运行时间为:"+(time2-time1));
  }
  }
  package com.gjy.proxy;
  public class TanktimeProxy implements Moveable{
  private Moveable t;
  public TanktimeProxy(Moveable t) {
  super();
  this.t = t;
  }
  @Override
  public void move() {
  long time1 = System.currentTimeMillis();
  System.out.println("time1="+time1);
  t.move();
  long time2 = System.currentTimeMillis();
  System.out.println("time2="+time2);
  System.out.println("运行时间为:"+(time2-time1));
  }
  }
  实际被代理对象:Tank
  [java]
  package com.gjy.proxy;
  public class Tank implements Moveable{
  @Override
  public void move() {
  System.out.println("TanK moving........");
  }
  }
  package com.gjy.proxy;
  public class Tank implements Moveable{
  @Override
  public void move() {
  System.out.println("TanK moving........");
  }
  }
  测试:
  [java]
  package com.gjy.proxy;
  public class TestTank {
  public static void main(String[] args) {
  Tank t = new Tank();
  Moveable move = new TanktimeProxy(t);
  move.move();
  }
  }
  package com.gjy.proxy;
  public class TestTank {
  public static void main(String[] args) {
  Tank t = new Tank();
  Moveable move = new TanktimeProxy(t);
  move.move();
  }
  }

有帮助
(0)
0%
没帮助
(0)
0%