文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C/C++无废话C#设计模式之九:Proxy
精品推荐
特别推荐
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)
·C#程序开发中的常用函数汇总
·C/C++笔试、面试题目大汇总
·Beej的网络socket编程指南
·socket编程原理
·C语言的常用库函数使用方法分析及用途
·在C语言中如何处理时间和日期
·C++设计模式之Singleton
·VC++动态链接库编程之MFC扩展 DLL
热点TOP10
·进程和线程编程
·C语言编程易犯毛病集合
·打字游戏
·Awk 基础入门:Awk 实例编程
·asp.net中调用javascript函数实现多功能日期控件示例
·C语言编程常见问题解答之常用函数的包含文件(1)
·C# GridView 排序及分页
·C #中的几个线程同步对象方法
·无废话C#设计模式之三:Abstract Factory
·C# DataGridView隔行显示不同的颜色

无废话C#设计模式之九:Proxy

日期:2007年11月6日 作者: 查看:[大字体 中字体 小字体]


  本系列文章将向大家介绍一下C#的设计模式,此为第九篇文章,相信对大家会有所帮助的。废话不多说,继续来看。

  意图

  为其他对象提供一种代理以控制对这个对象的访问。

  场景

  代理模式非常常用,大致的思想就是通过为对象加一个代理来降低对象的使用复杂度、或是提升对象使用的友好度、或是提高对象使用的效率。在现实生活中也有很多代理的角色,比如明星的经纪人,他就是一种代理,经纪人为明星处理很多对外的事情,目的是为了节省被代理对象也就是明星的时间。保险代理人帮助投保人办理保险,目的降低投保的复杂度。

  在开发中代理模式也因为目的不同效果各不相同。比如,如果我们的网站程序是通过.NET Remoting来访问帐号服务的。在编写代码的时候可能希望直接引用帐号服务的DLL,直接实例化帐号服务的类型以方便调试。那么,我们可以引入Proxy模式,做一个帐号服务的代理,网站只需要直接调用代理即可。在代理内部实现正式和测试环境的切换,以及封装调用.NET Remoting的工作。

  示例代码

  using System;
  using System.Collections.Generic;
  using System.Text;
  namespace ProxyExample
  {
  class Program
  {
  static void Main(string[] args)
  {
  AccountProxy ap = new AccountProxy();
  ap.Register();
  }
  }
  interface IAccount
  {
  void Register();
  }
  class Account : IAccount
  {
  public void Register()
  {
  System.Threading.Thread.Sleep(1000);
  Console.WriteLine("Done");
  }
  }
  class AccountProxy : IAccount
  {
  readonly bool isDebug = true;
  IAccount account;
  public AccountProxy()
  {
  if (isDebug)
  account = new Account();
  else
  account = (IAccount)Activator.GetObject(typeof(IAccount), "uri");
  }
  public void Register()
  {
  Console.WriteLine("Please wait...");
  account.Register();
  }
  }
  }

  代码说明

  IAccount就是抽象主题角色。代理对象和被代理对象都遵循这个接口,这样代理对象就能替换被代理对象。

  AccountProxy就是代理主题角色。代理主题通常会存在一些逻辑或预处理或后处理操作,不会仅仅是对操作的转发。

  Account就是真实主题角色。

  何时采用

  代理模式应用非常广泛,如果你希望降低对象的使用复杂度、或是提升对象使用的友好度、或是提高对象使用的效率都可以考虑代理模式。

  实现要点

  代理对象和被代理对象都遵循一致的接口。

  在某些情况下,可以不必保持接口一致性,如果封装确实需要损失一些透明度,那么也可以认为是Proxy。

  注意事项

  Proxy、Facade以及Adapter可能都是对对象的一层封装,侧重点不同。Proxy基于一致的接口进行封装,Facade针对封装子系统,转化为高层接口,而Adapter的封装是处于适配接口的目的。

(出处:清风网络学院






上一篇:怎样才能保护好 SQL Server 数据库

下一篇:新版QQ群聊天设置技巧

相关文章:
·如何以安全模式启动计算机
·如何进入QQ空间安全模式
·如何建立一个网站?规划、设计、目的、原则、宣传
·WinXP中的无人安装模式
·综合实例:PS洗衣粉包装设计印刷全攻略
·3DsMAX教程 设计叶片上的精致三维蜻蜓
·几何图形英文字体创意设计及应用作品欣赏
·英文字体创意设计及应用作品欣赏
·3DMAX设计制作两只花瓣上的美丽蝴蝶
·如何使设计作品获得最佳菲林输出?
相关软件:
·C语言程序设计
·Dreamweaver 网页设计
·美工设计教程
·Photoshop CS经典创意设计200例
·Photoshop CS中文版平面设计师标准案例教程
·Windows环境下32位汇编语言程序设计
·颐家IDO在线互动设计软件
·Photoshop 7.0 平面 广告 装帧设计100例
·超级DIY设计器V7.0 build 2143 特别版
·远潮自我形象设计系统

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot