设计模式代理模式ProxyPPT文件格式下载.pptx
- 文档编号:15048812
- 上传时间:2022-10-27
- 格式:PPTX
- 页数:45
- 大小:2.62MB
设计模式代理模式ProxyPPT文件格式下载.pptx
《设计模式代理模式ProxyPPT文件格式下载.pptx》由会员分享,可在线阅读,更多相关《设计模式代理模式ProxyPPT文件格式下载.pptx(45页珍藏版)》请在冰豆网上搜索。
publicGraduate(ExpressPersonYDY)this.YDY=YDY;
publicvoidGiveComputer()Console.WriteLine(YDY.Name+请你托运计算机);
publicvoidGiveBaggage()Console.WriteLine(YDY.Name+请你托运行李);
武汉科技大学问题问题(Problem)(Problem)staticvoidMain(stringargs)ExpressPersonYDY=newExpressPerson();
YDY.Name=宅急送;
Graduatezhangsan=newGraduate(YDY);
zhangsan.GiveComputer();
zhangsan.GiveBaggage();
Console.Read();
武汉科技大学问题问题(Problem)(Problem)/女同学classClassmateExpressPersonYDY;
publicClassmate(ExpressPersonYDY)this.YDY=YDY;
ClassmateGirl=newClassmate(YDY);
Girl.GiveComputer();
Girl.GiveBaggage();
武汉科技大学问题问题(Problem)(Problem)/寄东西interfaceGiveObjectvoidGiveComputer();
voidGiveBaggage();
武汉科技大学问题问题(Problem)(Problem)/毕业生classGraduate:
GiveObjectExpressPersonYDY;
武汉科技大学问题问题(Problem)(Problem)/女同学:
GiveGiftclassClassmate:
GiveObjectGraduatezhangsan;
publicClassmate(ExpressPersonYDY)zhangsan=newGraduate(YDY);
publicvoidGiveComputer()zhangsan.GiveComputer();
publicvoidGiveBaggage()zhangsan.GiveBaggage();
武汉科技大学主要内容主要内容模式动机与定义1模式结构与分析2模式实例与解析3模式效果与应用4武汉科技大学代理模式代理模式(Proxy)(Proxy)v模式动机模式名称:
代理模式(Proxy)一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用,去掉客户不能看到的内容和服务或者增添客户需要的额外服务。
如在网页上查看一张图片,由于网速等原因图片不能立即显示,我们可以在图片传输过程中先把一些简单的用于描述图片的文字传输到客户端,此时这些文字就成为了图片的代理。
武汉科技大学代理模式代理模式(Proxy)(Proxy)v模式定义代理模式(ProxyPattern):
给某一个对象提供一个代理,并由代理对象控制对原对象的引用。
代理模式的英文叫做Proxy或Surrogate。
代理模式是一种对象结构型模式。
武汉科技大学代理模式代理模式(Proxy)(Proxy)v模式结构武汉科技大学代理模式代理模式(Proxy)(Proxy)v参与者Subject:
抽象主题角色Proxy:
代理主题角色RealSubject:
真实主题角色武汉科技大学代理模式代理模式(Proxy)(Proxy)v参与者抽象主题角色(Subject):
声明了真实主题和代理主题的共同接口,这样一来在任何使用真实主题的地方都可以使用代理主题真实主题(RealSubject)角色:
定义了代理角色所代表的真实对象武汉科技大学代理模式代理模式(Proxy)(Proxy)v参与者代理主题(Proxy)角色:
代理主题角色内部含有对真实主题的引用,从而可以在任何时候操作真实主题对象;
代理主题角色提供一个与真实主题角色相同的接口,以便可以在任何时候都可以替代真实主题;
控制真实主题的应用,负责在需要的时候创建真实主题对象(和删除真实主题对象)武汉科技大学代理模式代理模式(Proxy)(Proxy)v在软件系统中,我们无时不在跨越障碍,当我们访问网络上一台计算机的资源时,我们正在跨越网络障碍,当我们去访问服务器上数据库时,我们又在跨越数据库访问障碍,同时还有网络障碍。
跨越这些障碍有时候是非常复杂的,如果我们更多的去关注处理这些障碍问题,可能就会忽视了本来应该关注的业务逻辑问题,Proxy模式有助于我们去解决这些问题。
武汉科技大学代理模式代理模式(Proxy)(Proxy)v我们以一个简单的数学计算程序为例,这个程序只负责进行简单的加减乘除运算:
publicclassMathpublicdoubleAdd(doublex,doubley)returnx+y;
publicdoubleSub(doublex,doubley)returnx-y;
publicdoubleMul(doublex,doubley)returnx*y;
publicdoubleDev(doublex,doubley)returnx/y;
武汉科技大学代理模式代理模式(Proxy)(Proxy)v如果说这个计算程序部署在我们本地计算机上,使用就非常之简单了,我们也就不用去考虑Proxy模式了。
但现在问题是这个Math类并没有部署在我们本地,而是部署在一台服务器上,也就是说Math类根本和我们的客户程序不在同一个地址空间之内,我们现在要面对的是跨越Internet这样一个网络障碍:
武汉科技大学代理模式代理模式(Proxy)(Proxy)v这时候调用Math类的方法就没有那么简单了,因为我们更多的还要去考虑网络的问题,对接收到的结果解包等一系列操作武汉科技大学代理模式代理模式(Proxy)(Proxy)v为了解决由于网络等障碍引起的复杂性,就引出了Proxy模式,我们使用一个本地的代理来替Math类打点一切,即为我们的系统引入了一层间接层武汉科技大学代理模式代理模式(Proxy)(Proxy)v我们在MathProxy中实现对Math数据类的访问,让MathProxy来代替网络上的Math类,这样我们看到MathProxy就好像是本地Math类,它与客户程序处在了同一地址空间内:
武汉科技大学代理模式代理模式(Proxy)(Proxy)publicclassMathProxyprivateMathmath;
publicMathProxy()math=newMath();
/以下的方法中,可能不仅仅是简单的调用Math类的方法publicdoubleAdd(doublex,doubley)returnmath.Add(x,y);
publicdoubleSub(doublex,doubley)returnmath.Sub(x,y);
publicdoubleMul(doublex,doubley)returnmath.Mul(x,y);
publicdoubleDev(doublex,doubley)returnmath.Dev(x,y);
武汉科技大学代理模式代理模式(Proxy)(Proxy)v现在可以说我们已经实现了对Math类的代理,存在的一个问题是我们在MathProxy类中调用了原实现类Math的方法,但是Math并不一定实现了所有的方法,为了强迫Math类实现所有的方法,另一方面,为了我们更加透明的去操作对象,我们在Math类和MathProxy类的基础上加上一层抽象,即它们都实现与IMath接口武汉科技大学代理模式代理模式(Proxy)(Proxy)publicinterfaceIMathdoubleAdd(doublex,doubley);
doubleSub(doublex,doubley);
doubleMul(doublex,doubley);
doubleDev(doublex,doubley);
/Math类和MathProxy类分别实现IMath接口:
publicclassMathProxy:
IMath。
publicclassMath:
武汉科技大学代理模式代理模式(Proxy)(Proxy)v此时我们在客户程序中就可以像使用Math类一样来使用MathProxy类publicstaticvoidMain()MathProxyproxy=newMathProxy();
doubleaddresult=proxy.Add(2,3);
doublesubresult=proxy.Sub(2,3);
doublemulresult=proxy.Mul(2,3);
doubledevresult=proxy.Dev(2,3);
武汉科技大学代理模式代理模式(Proxy)(Proxy)v到这儿整个使用Proxy模式的过程就完成了,回顾前面我们的解决方案,无非是在客户程序和Math类之间加了一个间接层,这也是我们比较常见的解决问题的手段之一。
v另外,对于程序中的接口Imath,并不是必须的,大多数情况下,我们为了保持对对象操作的透明性,并强制实现类实现代理类所要调用的所有的方法,我们会让它们实现同一个接口。
但是代理类它其实只是在一定程度上代表了原来的实现类,所以它们有时候也可以不实现于同一个接口。
武汉科技大学代理模式代理模式(Proxy)(Proxy)v模式使用代理有以下几种:
远程(Remote)代理虚拟(Virtual)代理保护(ProtectorAccess)代理缓冲(Cache)代理防火墙(Firewall)代理同步化(Synchronization)代理智能引
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 代理 Proxy