美文网首页设计模式
设计模式之禅笔记-代理模式

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

作者: 凉快先生 | 来源:发表于2020-12-20 11:56 被阅读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(); }

      }

    相关文章

      网友评论

        本文标题:设计模式之禅笔记-代理模式

        本文链接:https://www.haomeiwen.com/subject/vyxknktx.html