知识大全 代理模式

Posted

篇首语:为寻求真理的努力所付出的代价,总是比不担风险地占有它要高昂得多。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 代理模式相关的知识,希望对你有一定的参考价值。

  在上一篇你会在C#的类库中添加web service吗? 我谈到了web service的应用 本人一直学习设计模式 而web service就是代理模式的一种特别经典的应用

  名词解释             代理 代理服务器 即Proxy服务器 在互联网上的完成跑腿服务 当你在浏览器中设置了某个Proxy服务器之后 由你的浏览器所发出的任何要求 都会被送到Proxy服务器上去 由这台Proxy服务器代为处理      

  现实中真实例子:

  在工厂和销售商之间也是这种类似的代理关系 工厂所生产的产品要想销售出去 首先必须要有客户 但是工厂是不希望这样的直接客户直接到工厂来买产品 原因可想而之 我这里列了几项

  第一 工厂并没有那么多时间去接待数量众多的客户         第二 工厂并不一定具有一个非常出色销售团队        这样工厂就非常希望找到一个代理 来帮工厂完成销售任务 工厂把产品交给代理 代理负责打广告 销售 售后服务等等 在电脑城中 当我们diy电脑的时候 商家会到不同的硬件代理商那边去拿相关的配件 例如inter的cpu 电脑城中有很多商家做为intel的代理 他们都卖intel的cpu 代理商负责销售cpu 发放质保卡等 在某种程度上来说 代理就代表了intel(部分权利)

  代理商和工厂之间有一个共同的特点 他们都拥有intel的cpu 他们之间的利润成正比 说的抽象点就是他们之间具备共同的接口 客户可以和代理商沟通 特殊情况下可以直接和工厂沟通 例如 代理商找不到了 产品坏了 此时要修 这时就要直接访问工厂了 说的抽象点就是客户端可以通过代理来访问真实的类 也可以通过代理直接访问真实类

  这样就非常清晰的显示出代理模式的结构元素        抽象角色 代理和真实类共同接口 真实角色 代理角色所代表的真实对象  :  代理角色 它的内部含真实角色的引用 它可以访问真实角色中的任何公有方法

  代理模式的类图:

        

  代理模式的作用            在某些情况下 客户不想或者不能够直接引用一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用 例如在web application中添加web service 此时就会生成一个代理 这个代理负责访问远程服务 生成真实代理对象借助客户端调用

  web service生成代码如下:Settings Designer cs 从中可以看出它完成了连接远程服务的功能 至于详细的原理本人不才 望各位指点

// // <auto generated>//     此代码由工具生成 //     运行库版本: ////     对此文件的更改可能会导致不正确的行为 并且如果//     重新生成代码 这些更改将会丢失 // </auto generated>// namespace MyWebService Web Properties          [global::System Runtime CompilerServices CompilerGeneratedAttribute()]    [global::System CodeDom Compiler GeneratedCodeAttribute( Microsoft VisualStudio Editors SettingsDesigner SettingsSingleFileGenerator   )]    internal sealed partial class Settings : global::System Configuration ApplicationSettingsBase                 private static Settings defaultInstance = ((Settings)(global::System Configuration ApplicationSettingsBase Synchronized(new Settings())));                public static Settings Default             get                 return defaultInstance;                                    [global::System Configuration ApplicationScopedSettingAttribute()]        [global::System Diagnostics DebuggerNonUserCodeAttribute()]        [global::System Configuration SpecialSettingAttribute(global::System Configuration SpecialSetting WebServiceUrl)]        [global::System Configuration DefaultSettingValueAttribute( )]        public string MyWebService_Web_localhost_Service              get                 return ((string)(this[ MyWebService_Web_localhost_Service ]));                               代理模式在众多模式中都非常眼熟 在adapter中也有引用对象的存在 在Decorator中也有引用对象 它们的共同特点都是一个类包含另一个类的引用 可以通过它访问被引用对象所有公有方法 但是它们之间又存在不同点 无论是adaoter模式还是decoraor模式 它们存在 引用 类之间都不必拥有共同的接口 它们之间可以是完成不相关的对象        代理模式中的代理对象和真实对象之间 无论访问谁 最终访问的是同一对象 即真实对象 它们之间并没有发生质的变化        :adapter模式中存在的引用 是在一个类中 引用另一个类中的方法 使其方法签名发生变化 是外表变了 本质没变       decorator中存在的引用 是在旧类的基础了增加新的功能 cha138/Article/program/net/201311/13923

相关参考

知识大全 Java设计模式-----Proxy模式(动态代理)

Java设计模式-----Proxy模式(动态代理)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 精解Java中代理模式的实现

精解Java中代理模式的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简介摘要代理模式是G

知识大全 介绍一下代理模式(Proxy)

介绍一下代理模式(Proxy)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!当我们需要使用的对象很

知识大全 虚拟代理模式(Virtual Proxy)(图)

虚拟代理模式(VirtualProxy)(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  虚

知识大全 Java程序性能优化-代理模式(7)

Java程序性能优化-代理模式(7)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(1)

Java程序性能优化-代理模式(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(2)

Java程序性能优化-代理模式(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(3)

Java程序性能优化-代理模式(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(4)

Java程序性能优化-代理模式(4)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(5)

Java程序性能优化-代理模式(5)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!