博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结构型模式之七:代理模式
阅读量:5793 次
发布时间:2019-06-18

本文共 1643 字,大约阅读时间需要 5 分钟。

  hot3.png

这个篇文章是从外国文章(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 doingpublic class Mike {   public static void main(String[] args) {    BusinessAgent businessAgent = new BusinessAgent();    businessAgent.seduceMan();    businessAgent.happyWithMan();  }}

以上文章翻译自:

转载于:https://my.oschina.net/markho/blog/498186

你可能感兴趣的文章
响应式网页布局 - W3Schools How-Tos 01
查看>>
Redis在Web项目中的应用与实践
查看>>
深入理解Vue.js轻量高效的前端组件化方案
查看>>
以太坊---「地址、密码、私钥、助记词、Keystore 」那些事
查看>>
SpringBoot 实战 (二) | 第一个 SpringBoot 工程详解
查看>>
第十三课时:递归组件的使用
查看>>
个人博客三|首页后台开发
查看>>
2018 年终总结
查看>>
ThinkJS关联模型实践
查看>>
maven项目在svn中的上传与检出
查看>>
TypeScript--类
查看>>
基于 Kubernetes 实践弹性的 CI/CD 系统
查看>>
Google Translate的API调用
查看>>
大数据驱动的运营创新和探索
查看>>
python 使用PyQt5
查看>>
自定义元素探秘及构建可复用组件最佳实践
查看>>
利用微查询和数据锐化进行大数据探索
查看>>
深圳Android技术大会分享
查看>>
面试必问之JVM原理
查看>>
程序员接私活平台
查看>>