Java中的反射与代理(2)

Java中的反射与代理(2)

在经典的GoF设计模式中,有一种模式叫做代理模式,好比以前洋务运动的时候所说的「买办」,还有现在咱们经常听到的「代理人」战争中的「代理」,都是同一个意思——代替某人打理。

例如,很多北漂都找中介或者二房东租过房子,还有倒卖iPhone的黄牛党,对于租房的房客和房东、买iPhone的消费者和苹果公司来说,这些中介或者黄牛,就是对方的代理人,因为他们(买家或卖家)根本不关心谁在和自己交易,只要实现交易即可,而且也免去了一个个对接的麻烦,就像这样:

 

 

 

 

这个是最普通的代理,也称为「静态」代理,如果用代码来描述,就是:

/**
 * 需要代理的行为
 */
public interface Renting {
   // 租房
   public void renthouse();
}

 

/**
 * 买方行为
 */
public class Consumer implements Renting {
   @Override
   public void renthouse() {
      System.out.println("租客租房");
   }
}

/**
 * 代理实现
 */
public class RentingProxy implements Renting {
   private Renting renting;

   public RentingProxy(Renting renting) {
      this.renting = renting;
   }

   @Override
   public void renthouse() {
      System.out.println("代理方法前置:租房前看房");
      renting.renthouse();
      System.out.println("代理方法后置:满意签合同");
   }

   public static void main(String[] args) {
      Consumer consumer = new Consumer();
      consumer.renthouse();
      System.out.println("===================");
      Renting proxy = new RentingProxy(consumer);
      proxy.renthouse();
   }
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » Java中的反射与代理(2)