无废话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的封装是处于适配接口的目的。
(出处:急速软件下载学院)
-
- 无废话C#设计模式之九:Proxy 相关文章:
- ·多个技巧让局域网内互访无障碍
- ·用十大安全策略加固无线局域网安全
- ·Vista系统无法开启打印机共享怎么办?
- ·Vista防火墙导致网络无法访问解决方法
- ·Vista系统中CHM文档无法打开解决方法
- ·Sandboxie隔离病毒木马 上网下载安装再无忧
- ·Windows Vista修复无法上网技巧
- ·Windows Vista无法上网 让它自己修复网络
- ·配置无线局域网 图解WLAN配置攻略
- ·无线局域网应用疑难解惑
- 无废话C#设计模式之九:Proxy 相关软件
- ·《冰封王座》地图:真三国无双v4.3C2 简繁
- ·《冰封王座》地图:英雄无敌圣战之日V1.07正式版
- ·无聊的扯纸卷
- ·魔兽争霸地图 真三国无双 4.3D2
- ·GBA《真三国无双Adv》火爆试玩
- ·《无规则高尔夫大师赛》试玩
- ·《无人岛物语4》简体中文版试玩
- ·《魔法门之英雄无敌1》中文版试玩经典怀旧
- ·《真三国无双3》PC试玩版 百万大作
- ·《拳皇无限版》格斗试玩
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·用c#监控网络流量
- ·C#编写的windows计算器-源代码
- ·飞机订票系统设计
- ·C/C++笔试、面试题目大汇总
- ·《俄罗斯方块》程序编写详解
- ·Windows API-GDI入门基础知识详解(2)
- ·socket编程原理
- ·打字游戏
- ·七年IT奋斗纪实及感悟
- ·C #中的几个线程同步对象方法
- ·牛顿和拉格朗日插值算法
- ·VC++动态链接库编程之MFC扩展 DLL
- ·C# 操作文件
- ·如何用C#编写文本编辑器
- ·c#操作word表格
- ·编程特例篇——LOGO语言
- ·Raw Socket(原始套接字)实现Sniffer(嗅探)
- ·C#编程中的 New 关键词的几种用法
- ·实战开发 C# 索引器学习笔记
- ·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
特别推荐
- ·C#程序开发中的常用函数汇总
- ·C#数据库操作的三种经典用法
- ·C/C++笔试、面试题目大汇总
- ·Beej的网络socket编程指南
- ·socket编程原理
- ·C语言的常用库函数使用方法分析及用途
- ·在C语言中如何处理时间和日期
- ·C++设计模式之Singleton
- ·VC++动态链接库编程之MFC扩展 DLL
- ·TCP/IP网络重复型服务器通信软件的设计
- ·DirectX游戏开发入门
- ·经典与现代的结合:在MFC中集成RAD .NET框架
- ·Windows API-GDI入门基础知识详解(2)
- ·Visual C++ 入门精解
- ·C#基础概念二十五问
- ·用C#实现pdf文件的完整性验证
- ·成为嵌入式程序员应知道的0x10个问题
- ·TCP/IP编程实现远程文件传输
- ·几个C#编程的小技巧
- ·C# 编码规范和编程好习惯
