结构型模式之七:代理模式
结构型模式之七:代理模式
刀狂剑痴 发表于2年前
结构型模式之七:代理模式
  • 发表于 2年前
  • 阅读 40
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

这个篇文章是从外国文章(PS:瞄了一下,好像是金瓶梅!囧!)中翻译所得,用了一个古代的故事来解释设计模式。

1、什么就代理模式

我实在太忙去响应你的请求,所以你去找我的代理者,代理必须知道委托者能做什么,因此,他们有共同的接口,代理不能做,但是委托者能做,你可以忽略你不懂的人物。

2、代理模式的故事

这有一个从水浒传中翻译过来的有趣故事,可能我翻译之后不是很有趣,但是这是一个代理模式的好例子。 这就是情况 有一些坏男人,不知什么原因,总是喜欢跟好男人的老婆睡觉,在这些妻子中,有些也喜欢和坏男人睡觉,有些不喜欢,坏男人不好直接去问这些妻子,因为他们不确定哪些妻子喜欢做坏事,如果他做出坏的决定将会出现很坏的情况,所以这些坏男人需要一个代理去做这些事。 在场景中,我们有这些角色: CheatingWife/SluttyWife,一个接口定义他们经常做的事,如和坏男人欢喜~ HouseWifeOne,她是一个在家中放荡的妻子 Mike,他喜欢和别人的妻子睡觉 Business Agent, 做这一类的咨询业务

3、代理模式的类图

 

4、 Java代码

1 定义诈骗妻子类型 

2 定义诈骗妻子1号 

3 定义坏人代理 

4 让坏人开始做坏事

interface CheatingWife {
  // think about what this kind of women can do
  public void seduceMan(); // such as eye contact with men
 
  public void happyWithMan(); // happy what? You know that.
}
 
class HouseWifeOne implements CheatingWife {
 
  public void seduceMan() {
    System.out
        .println("HouseWifeOne secude men, such as making some sexy poses ...");
  }
 
  public void happyWithMan() {
    System.out.println("HouseWifeOne is happy with man ...");
  }
}
 
class BusinessAgent implements CheatingWife {
  private CheatingWife cheatingWife;
 
  public BusinessAgent() {
 
    this.cheatingWife = new HouseWifeOne();
  }
 
  public BusinessAgent(CheatingWife cheatingWife) {
    this.cheatingWife = cheatingWife;
  }
 
  public void seduceMan() {
    this.cheatingWife.seduceMan();
  }
 
  public void happyWithMan() {
    this.cheatingWife.happyWithMan();
  }
 
}
 
// see? it looks that agent/proxy is doing
public class Mike {
 
  public static void main(String[] args) {
    BusinessAgent businessAgent = new BusinessAgent();
    businessAgent.seduceMan();
    businessAgent.happyWithMan();
  }
}

以上文章翻译自: http://www.programcreek.com/2009/10/proxy-design-pattern-in-a-funny-story/

共有 人打赏支持
粉丝 18
博文 111
码字总数 82582
×
刀狂剑痴
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: