http://yangguangfu.iteye.com/blog/815787
4,应用场景举例:
比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上时是这样的体现的
先说说这个场景中的要素:一种类型的女人,潘金莲,王婆,西门庆,后来扩展的贾氏也和西门庆勾上了,我们是假设的,然后西门庆找潘金莲happy,但潘金莲不好意思直接,就找个王婆代理呗。我们看看具体代码。
先定义一种女人
- package com.yangguangfu.proxy;
- /**
- *
- * @author 阿福(trygf521@126.com)<br>
- *定义一种类型的女人,王婆和潘金莲都属于这个类型的女人
- */
- public interface KindWoman {
- //这种女人能做什么事情呢?
- public void makeEyesWithMan();//抛媚眼
- public void happyWithMan();//和男人那个....
- }
一种类型嘛,那肯定是接口,定义个潘金莲
- package com.yangguangfu.proxy;
- /**
- *
- * @author 阿福(trygf521@126.com)<br>
- *定义一个潘金莲是什么样的人
- */
- public class PanJinLian implements KindWoman{
- @Override
- public void happyWithMan() {
- System.out.println("潘金莲和男人在做那个...");
- }
- @Override
- public void makeEyesWithMan() {
- System.out.println("潘金莲抛媚眼...");
- }
- }
再定义个丑陋的王婆
- package com.yangguangfu.proxy;
- /**
- *
- * @author 阿福(trygf521@126.com)<br>
- *王婆这个人老聪明了,她太老了,是个男人都看不上她,
- *但是她有智慧经验呀,他作为一类女人的代理!
- */
- public class WangPo implements KindWoman {
- private KindWoman kindWoman;
- public WangPo(){
- //默认的话是潘金莲的代理
- this.kindWoman = new PanJinLian();
- }
- //她可以是KindWomam的任何一个女人的代理,只要你是这一类型
- public WangPo(KindWoman kindWoman){
- this.kindWoman = kindWoman;
- }
- @Override
- public void happyWithMan() {
- //自己老了,干不了了,但可以叫年轻的代替。
- this.kindWoman.happyWithMan();
- }
- @Override
- public void makeEyesWithMan() {
- //王婆年纪大了,谁看她抛媚眼啊
- this.kindWoman.makeEyesWithMan();
- }
- }
两个女主角都上场了,该男主角了,定义个西门庆
- package com.yangguangfu.proxy;
- /**
- *
- * @author 阿福(trygf521@126.com)<br>
- *水浒传是这样写的:西门庆被潘金莲用竹竿敲了一下,西门庆看痴迷了,被王婆看到了,就开始撮合两人好事,王婆作为潘金莲的代理人收了不少好处费,那我们假设一下:
- *如果没有王婆在中间牵线,这两个不要脸的能成事吗?难说得很!
- */
- public class XiMenQiang {
- /**
- * @param args
- */
- public static void main(String[] args) {
- WangPo wangPo;
- //把王婆叫出来
- wangPo = new WangPo();
- //然后西门庆说,我要和潘金莲Happy,然后王婆就安排了西门庆丢筷子哪出戏:
- wangPo.makeEyesWithMan();
- //看到没有表面是王婆在做,其实爽的是潘金莲
- wangPo.happyWithMan();
- }
- }
那这就是活生生的一个例子,通过代理人实现了某种目的,如果真去了王婆这个中间环节,直接西门庆和潘金莲勾搭,估计很难成就武松杀嫂事件。
那我们再考虑一下,水浒里面还有没有这类型的女人?有,卢俊义的老婆贾氏(就是和那个管家苟合的那个),这个名字起的:“贾氏”,那我们也让王婆做她的代理:
- package com.yangguangfu.proxy;
- /**
- *
- * @author 阿福(trygf521@126.com)<br>
- *定义一个贾氏是什么样的人
- */
- public class JiaShi implements KindWoman {
- @Override
- public void happyWithMan() {
- System.out.println("贾氏和男人在做那个...");
- }
- @Override
- public void makeEyesWithMan() {
- System.out.println("贾氏抛媚眼...");
- }
- }
西门庆勾潘金莲又勾引贾氏
- package com.yangguangfu.proxy;
- /**
- *
- * @author 阿福(trygf521@126.com)<br>
- *水浒传是这样写的:西门庆被潘金莲用竹竿敲了一下,西门庆看痴迷了,被王婆看到了,就开始撮合两人好事,王婆作为潘金莲的代理人收了不少好处费,那我们假设一下:
- *如果没有王婆在中间牵线,这两个不要脸的能成事吗?难说得很!
- */
- public class XiMenQiang {
- /**
- * @param args
- */
- public static void main(String[] args) {
- WangPo wangPo;
- //把王婆叫出来
- wangPo = new WangPo();
- //然后西门庆说,我要和潘金莲Happy,然后王婆就安排了西门庆丢筷子哪出戏:
- wangPo.makeEyesWithMan();
- //看到没有表面是王婆在做,其实爽的是潘金莲
- wangPo.happyWithMan();
- //西门庆勾引贾氏
- JiaShi jiaShi = new JiaShi();
- wangPo = new WangPo(jiaShi);
- wangPo.makeEyesWithMan();
- wangPo.happyWithMan();
- }
- }
说完这个故事,那我总结一下,代理模式主要使用了java的多态,干活的是被代理类,代理类主要是接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚得很,同样一个接口呗。好了不多说了,慢慢体会吧。
相关推荐
设计模式-代理模式(讲解及其实现代码)
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
NULL 博文链接:https://fangguanhong.iteye.com/blog/1911895
针对几种经典软件设计模式:模板方法模式 外观模式 代理模式 装饰器模式 桥模式 工厂方法模式 组合模式等给出了简单易懂的讲解,透彻明了。很好的学习资料哦,是我平时学习时做的笔记外加自己的理解,很不错的……
实例讲解Java设计模式编程中如何运用代理模式共3页.pdf.zip
带视频讲解的代理模式之动态代理,有源代码和课件,很有帮助
关于委托模式详细讲解(委托),主要举例说明..
这是对设计模式的讲解,代理模式的代码讲解
代理模式应该是做 iOS 开发过程中每个人都用到过的设计模式,以至于用得太普遍而分不清代理和协议之间的差异。本课程将会向大家讲解代理模式、代理与协议的区别以及用抽象基类 NSProxy 实现代理模式。
spring框架的AOP代理模式讲解及例子
保险代理人资格考试真题模式讲解试卷PPT教案学习.pptx
代理模式 Proxy模式是一种常用的设计模式,它主要用来通过一个对象(比如B)给一个对象(比如A) 提供’代理’的方式方式访问。比如一个对象不方便直接引用,代理就在这个对象和访问者之间做了中介 你先设想:一个对象...
常用的代理技术分为正向代理、反向代理和透明代理。本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理解代理服务技术
对java代理模式有个详细而深入的讲解,从jdk api的角度来讲解的。。。
Design-Patterns 23种设计模式的讲解:设计模式分为创建型模式、结构型模式...代理模式 详细的讲解文件在这里 行为型模式 命令模式 详细的讲解文件在这里 策略模式 详细的讲解文件在这里 模板模式 详细的讲解文件在这里
深入浅出讲解代理模式,大厂面试必备~十分钟理解!
代理,动态代理,讲解的很清晰
代理模式 12.责任链模式 13.命令模式 14.解释器模式 15.迭代器模式 16.调停者模式 17.备忘录模式 18.观察者模式 19.策略模式 20.状态模式 21.模板模式 22.访问者模式 最后,还附带一个关于“分派”的...
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...