结构型模式: Proxy(代理)

非原创,引自文档:JAVA设计模式之禅完整版.pdf


public interface KindWomen {    
  //这种类型的女人能做什么事情呢? 
  public void makeEyesWithMan();  //抛媚眼    
  public void happyWithMan();     //happy what? You know that! 
}

public class PanJinLian implements KindWomen { 
public void happyWithMan() { 
    System.out.println("潘金莲在和男人做那个....."); 
  } 
public void makeEyesWithMan() { 
    System.out.println("潘金莲抛媚眼");  
  } 
}

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();  //王婆这么大年龄了,谁看她抛媚眼?!  
  }  
}

public class XiMenQing { 
   
  /* 
   * 水浒里是这样写的:西门庆被潘金莲用竹竿敲了一下难道,痴迷了, 
   * 被王婆看到了, 就开始撮合两人好事,王婆作为潘金莲的代理人 
   * 收了不少好处费,那我们假设一下: 
   * 如果没有王婆在中间牵线,这两个不要脸的能成吗?难说的很! 
   */ 
  public static void main(String[] args) { 
    //把王婆叫出来 
    WangPo wangPo = new WangPo(); 
     
    //然后西门庆就说,我要和潘金莲happy,然后王婆就安排了西门庆丢筷子的那出戏: 
    wangPo.makeEyesWithMan();  //看到没,虽然表面上时王婆在做,实际上爽的是潘金莲 
    wangPo.happyWithMan();  } 
}

public class JiaShi implements KindWomen {  
  public void happyWithMan() { 
    System.out.println("贾氏正在Happy中......"); 
 
public void makeEyesWithMan() { 
    System.out.println("贾氏抛媚眼");  
  }  
}

public class XiMenQing {    
  public static void main(String[] args) { 
    //改编一下历史,贾氏被西门庆勾走: 
    JiaShi jiaShi = new JiaShi(); 
    WangPo wangPo = new WangPo(jiaShi); //让王婆作为贾氏的代理人 
     
    wangPo.makeEyesWithMan(); 
    wangPo.happyWithMan();     
  } 

代理模式的重点是,在对象里面定义一个代理成员,代理动作通过该成员执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值