
C#设计模式
结合应用实例,全面介绍C#设计模式,包括模式动机、模式定义、模式结构、模式应用实例分析、模式扩展知识、模式优缺点分析、模式适用场景等知识,全面提升您的设计能力和代码质量!
LoveLion
这个作者很懒,什么都没留下…
展开
-
模板方法模式深度解析(三)
4 钩子方法的使用 模板方法模式中,在父类中提供了一个定义算法框架的模板方法,还提供了一系列抽象方法、具体方法和钩子方法,其中钩子方法的引入使得子类可以控制父类的行为。最简单的钩子方法就是空方法,代码如下:public virtual void Display() { } 当然也可以在钩子方法中定义一个默认的实现,如果子类不覆盖钩子方法,则执行父类的默认实现代原创 2012-12-15 21:53:41 · 16356 阅读 · 22 评论 -
模板方法模式深度解析(二)
3 模板方法模式应用实例 下面通过一个应用实例来进一步学习和理解模板方法模式。 1. 实例说明 某软件公司欲为某银行的业务支撑系统开发一个利息计算模块,利息计算流程如下: (1) 系统根据账号和密码验证用户信息,如果用户信息错误,系统显示出错提示; (2) 如果用户信息正确,则根据用户类型的不同使用不同的利息计算公式计算利息(如活期账户和定期账户原创 2012-12-15 21:24:33 · 16164 阅读 · 17 评论 -
模板方法模式深度解析(一)
1. 模板方法模式概述 在现实生活中,很多事情都包含几个实现步骤,例如请客吃饭,无论吃什么,一般都包含点单、吃东西、买单等几个步骤,通常情况下这几个步骤的次序是:点单 --> 吃东西 --> 买单。在这三个步骤中,点单和买单大同小异,最大的区别在于第二步——吃什么?吃面条和吃满汉全席可大不相同,如图1所示:图1 请客吃饭示意图 在软件开发中,有时也会遇到类似的情况,某个方原创 2012-12-15 20:52:32 · 55665 阅读 · 25 评论 -
深入浅出外观模式(三)
4. 抽象外观类 在标准的外观模式结构图中,如果需要增加、删除或更换与外观类交互的子系统类,必须修改外观类或客户端的源代码,这将违背开闭原则,因此可以通过引入抽象外观类来对系统进行改进,在一定程度上可以解决该问题。在引入抽象外观类之后,客户端可以针对抽象外观类进行编程,对于新的业务需求,不需要修改原有外观类,而对应增加一个新的具体外观类,由新的具体外观类来关联新的子系统对象,同时通过修改原创 2012-12-05 14:32:40 · 20278 阅读 · 21 评论 -
深入浅出外观模式(二)
3. 外观模式应用实例 下面通过一个应用实例来进一步学习和理解外观模式。 1. 实例说明 某软件公司欲开发一个可应用于多个软件的文件加密模块,该模块可以对文件中的数据进行加密并将加密之后的数据存储在一个新文件中,具体的流程包括三个部分,分别是读取源文件、加密、保存加密之后的文件,其中,读取文件和保存文件使用流来实现,加密操作通过求模运算实现。这三个操作相对独立原创 2012-12-05 14:20:47 · 28687 阅读 · 23 评论 -
深入浅出外观模式(一)
外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。 1. 外观模式概述 不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,如图1(A)所示,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说想要一杯什么样的茶,是铁原创 2012-12-04 23:55:09 · 42239 阅读 · 31 评论 -
饿汉式单例与懒汉式单例的C#实现
本文将介绍如何使用C#语言实现饿汉式单例与懒汉式单例,并分析饿汉式单例与懒汉式单例的优缺点。 1. 饿汉式单例类 饿汉式单例类(Eager Singleton)是实现起来最容易的单例类,饿汉式单例类结构图如图1所示。图1 饿汉式单例类图 从图1中可以看出,由于在定义静态变量的时候实例化单例类,因此在类加载时单例对象就已创建,代码如下:class EagerSingle原创 2012-12-02 22:21:49 · 8901 阅读 · 5 评论 -
如何使用C#语言实现原型模式
原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。 《西游记》中,孙悟空可以根据自己的形状复制(克隆)出多个身外身,如图1所示,这种技巧在面向对象软件设计领域被称之为原型模式,孙悟空被称之为原型对象。原型模式通过复制一个原型对象得到多个与原型对象一模一样的新对象。 图1 孙悟空复制身外身 原型模式结构如图2所示: 图2 原型模式结构图原创 2012-10-19 18:37:31 · 7050 阅读 · 8 评论 -
C#设计模式之代理模式(四)
15.7 代理模式效果与适用场景 代理模式是常用的结构型设计模式之一,它为对象的间接访问提供了一个解决方案,可以对对象的访问进行控制。代理模式类型较多,其中远程代理、虚拟代理、保护代理等在软件开发中应用非常广泛。 15.7.1 模式优点 代理模式的共同优点如下: (1) 能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。 (2) 客户端可以针原创 2012-11-27 00:22:37 · 16829 阅读 · 11 评论 -
C#设计模式之代理模式(三)
15.4 远程代理 远程代理(Remote Proxy)是一种常用的代理模式,它使得客户端程序可以访问在远程主机上的对象,远程主机可能具有更好的计算性能与处理速度,可以快速响应并处理客户端的请求。远程代理可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在。客户端完全可以认为被代理的远程业务对象是在本地而不是在远程,而远程代理对象承担了大部分的网络通信工作,并负责对远程业务方法的调用。原创 2012-11-27 00:02:02 · 16127 阅读 · 11 评论 -
C#设计模式之代理模式(二)
15.3 代理模式应用实例 下面通过一个应用实例来进一步学习和理解代理模式。 1. 实例说明 某软件公司承接了某信息咨询公司的收费商务信息查询系统的开发任务,该系统的基本需求如下: (1) 在进行商务信息查询之前用户需要通过身份验证,只有合法用户才能够使用该查询系统; (2) 在进行商务信息查询时系统需要记录查询日志,以便根据查询次数收取原创 2012-11-26 23:28:42 · 22507 阅读 · 20 评论 -
C#设计模式之代理模式(一)
代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。 15.1 代理模式概述 近年来,代购已逐步成为电子商务原创 2012-11-26 23:04:10 · 36328 阅读 · 23 评论