这个篇文章是从外国文章(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(); }}
以上文章翻译自: