设计模式

设计模式之禅笔记-代理模式

2020-12-20  本文已影响0人  凉快先生

代理类和被代理类实现同一个接口,所以被代理类能干的事代理类也能干,幕后还是交给被代理类来做,代理类还能做一些被代理类不能做的事,比如添加日志。

1.业务场景

西门庆找潘金莲干事,直接找不合适,就找了代理王婆

2.定义代理接口

public interface KindWomen {

  // 这种类型的女人能做什么事情呢?

  public void makeEyesWithMan(); // 抛媚眼

  public void happyWithMan(); //happy what? You know that!

  }

3.定义潘金莲实现接口

public class PanJinLian implements KindWomen {

  public void happyWithMan() {

  System.out.println("潘金莲在和男人做那个....." );

  }

  public void makeEyesWithMan() { System.out.println("潘金莲抛媚眼" );

  }

  }

4.定义王婆代理

public class WangPo implements KindWomen {

  private KindWomen kindWomen ;

  public WangPo(){ // 默认的话,是潘金莲的代理

  this.kindWomen = new PanJinLian();

  }

  //她可以是KindWomen 的任何一个女人的代理,只要你是这一类型

  public WangPo(KindWomen kindWomen){

  this.kindWomen = kindWomen;

  }

  public void happyWithMan() {

  this.kindWomen.happyWithMan(); // 自己老了,干不了,可以让年轻的代替 }

  public void makeEyesWithMan() {

  this.kindWomen.makeEyesWithMan(); // 王婆这么大年龄了,谁看她抛媚眼?! }

  }

5.定义西门庆

public class XiMenQing {

  public static void main(String[] args) {

  // 把王婆叫出来

  WangPo wangPo = new WangPo();

  //然后西门庆就说,我要和潘金莲happy,然后王婆就安排了西门庆丢筷子的那出戏 : wangPo.makeEyesWithMan(); // 看到没,虽然表面上时王婆在做,实际上爽的是潘金莲 wangPo.happyWithMan(); }

  }

上一篇下一篇

猜你喜欢

热点阅读