《设计模式之禅》学习之代理模式
来源:互联网 发布:小甲鱼python课后作业 编辑:程序博客网 时间:2024/06/15 05:44
1.代理模式(Proxy Pattern):通俗的来讲,我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀。即定义为:为其他对象提供一种代理以控制对这个对象的访问。
2.情节描述:比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理。卢俊义的老婆贾氏(就是和那个固管家苟合的那个),这名字起的:“假使”,那我们也让王婆做她的代理。
3.类图描述:
4代码描述:
class XiMenQing { static void Main(string[] args) { PanJinLian pjl = new PanJinLian(); WangPo wp = new WangPo(pjl);//代理金莲 wp.makeEyesWithMan(); wp.makeHappyWithMan(); Console.WriteLine("--完事---"); wp = new WangPo(new JiaShi()); wp.makeEyesWithMan(); wp.makeHappyWithMan(); Console.ReadKey(); } } public interface KindWoman { void makeEyesWithMan(); void makeHappyWithMan(); } public class PanJinLian:KindWoman { public void makeEyesWithMan() { Console.WriteLine("金莲抛媚眼……"); } public void makeHappyWithMan() { Console.WriteLine("金莲和男人happy……"); } } public class JiaShi : KindWoman { public void makeEyesWithMan() { Console.WriteLine("贾氏抛媚眼……"); } public void makeHappyWithMan() { Console.WriteLine("贾氏和男人happy……"); } } public class WangPo : KindWoman { private KindWoman kindWoman; public WangPo() { this.kindWoman = new PanJinLian(); } public WangPo(KindWoman kindWoman) { this.kindWoman = kindWoman; } public void makeEyesWithMan() { this.kindWoman.makeEyesWithMan(); } public void makeHappyWithMan() { this.kindWoman.makeHappyWithMan(); } }
5.总结
说完这个故事,那额总结一下,代理模式主要使用了面向对象三大特性之一 ——多态,干活的是被代理类,代理类主要是接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口或者都继承实现一个类呗,参见另一种描述(利用抽象类进行描述),如图:
- 设计模式之代理模式学习二----普通代理----------《设计模式之禅》学习笔记
- 设计模式之代理模式学习------强制代理-----------《设计模式之禅》学习笔记
- 设计模式之代理模式学习------动态代理-----《设计模式之禅》学习笔记
- 《设计模式之禅》学习之代理模式
- 设计模式之代理模式学习
- 设计模式学习笔记之代理模式
- 设计模式学习之代理模式
- 设计模式之代理模式学习
- 设计模式学习笔记之代理模式
- 设计模式学习之代理模式
- 设计模式学习之--代理模式
- 设计模式之代理模式学习demo
- 设计模式学习之路-代理模式
- JavaScript学习之设计模式->代理模式
- java设计模式学习之代理模式
- 设计模式学习之代理模式
- 设计模式学习之代理模式
- 设计模式学习之代理模式
- 用Swing制作精美的图层叠加图
- 今天10点服务器故障。load averages : 200多。。。
- Hibernate3---持久化对象的状态
- 平时所用几何类(根据某点求直线的垂线)
- android JAVA 层API GPS 研究总结
- 《设计模式之禅》学习之代理模式
- VC++ 中IP Address 控件的使用
- JDK中有关23个经典设计模式的示例
- asp.net中Roles和User的异常处理机制的思考
- ext3 文件系统错误
- 适于android初学者入门的资料集
- java 7 正式发布了
- oracle的NULL和0
- Linux下共享库(SO)有关的几个环境变量