首页 > 范文大全 > 正文

浅析C#设计模式之模式

开篇:润墨网以专业的文秘视角,为您筛选了一篇浅析C#设计模式之模式范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与对象需要实现相同的接口。根据模式的使用目的不同,模式又可以分为多种类型,例如保护、远程、虚拟、缓冲等,它们应用于不同的场合,满足用户的不同需求。

关键词:c#设计模式模式

一、模式概述

模式的英文叫做Proxy或Surrogate,中文都可译成""。所谓,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而对象可以在客户端和目标对象之间起到中介的作用。

模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与对象需要实现相同的接口。(Proxy)模式给某一个模式是一种对象结构型模式。在模式中引入了一个新的对象,对象在客户端对象和目标对象之间起到中介的作用,它去掉客户不能看到的内容和服务或者增添客户需要的额外的新服务。

二、模式的种类

如果按照使用目的来划分,有以下几种:

远程(Remote):为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程又叫做大使(Ambassador)。

虚拟(Virtual):根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。

Copy-on-Write:虚拟的一种。把复制(克隆)拖延到只有在客户端需要时,才真正采取行动。

保护(Protect or Access):控制对一个对象的访问,如果需要,可以给不同的用户提供不同级别的使用权限。

Cache:为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。

防火墙(Firewall):保护目标,不让恶意用户接近。

同步化(Synchronization):使几个用户能够同时使用一个对象而没有冲突。

智能引用(Smart Reference):当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等。

在所有种类的模式中,虚拟(Virtual)、远程(Remote)、智能引用(Smart Reference Proxy)和保护(Protect or Access)是最为常见的模式。

三、远程的例子

Achilles是一个用来测试网站的安全性能的工具软件。Achilles相当于位于客户端的的一个桌面服务器,在一个HTTP过程里起到一个中间人的作用,但是Achilles与通常的服务器又有不同。Achilles截获双向的通信数据,使得Achilles软件的用户可以改变来自和发往网络服务器的数据,甚至可以拦截并修改SSL通讯。另外一个例子就是Windows的快捷方式。快捷方式是它所引用的程序的一个。

四、模式结构与实现

模式的结构比较简单,其核心是类,为了让客户端能够一致性地对待真实对象和对象,在模式中引入了抽象层。

模式包含如下三个角色:

Subject(抽象主题角色):它声明了真实主题和主题的共同接口,这样一来在任何使用真实主题的地方都可以使用主题,客户端通常需要针对抽象主题角色进行编程。

Proxy(主题角色):它包含了对真实主题的引用,从而可以在任何时候操作真实主题对象;在主题角色中提供一个与真实主题角色相同的接口,以便在任何时候都可以替代真实主题;主题角色还可以控制对真实主题的使用,负责在需要的时候创建和删除真实主题对象,并对真实主题对象的使用加以约束。通常,在主题角色中,客户端在调用所引用的真实主题操作之前或之后还需要执行其他操作,而不仅仅是单纯调用真实主题对象中的操作。

在实际开发过程中,类的实现比上述代码要复杂很多,模式根据其目的和实现方式不同可分为很多种类。

参考文献

[1] 林舒萍,罗键.设计模式的应用研究[J]. 计算机工程与设计. 2005(11)

[2] 陈智.在中使用设计模式[J]. 甘肃科技. 2006(10)

[3] 夏浩波.单例模式的设计与应用[J]. 电脑开发与应用. 2011(01)

[4]丁中文,王怀军.在C#中使用设计模式科技创新导报[J]. 2007(12)