- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Design Patterns: Solidify Your C# Application Architecture with Design Patterns中文版(上篇)
Samir Bajaj
译者:荣耀
【译序:C#进阶文章。译者对Samir提供的C#例子进行了简单整理(作者提供的某些代码在译者的环境中无法通过编译),并编写了对应的C++示例,一并置于译注中,以便读者比对。C#、C++程序调试环境均为Microsoft Visual Studio.NET 7.0 Beta2
【概要:通过提供一个框架,设计模式可以解决应用开发中的许多问题。模式使得设计过程更加清晰高效,它特别适用于C#程序开发,因为C#是面向对象的语言。【译注:因为设计模式的由来和出发点就是描述面向对象的(可复用的)软件设计】现有的设计模式为你自己的类的设计提供了优秀的模板,使用模式可以缩短软件开发周期。本文将描述几个流行的设计模式,包括singleton、strategy、decorator、composite和state,你可以在你自己的应用中使用它们,藉此提高应用的扩展性,并使类更易于重用。】
我必须承认我是设计模式的一个热心的支持者。自从我阅读了Gamma、Helm、Johnson和Vlissides合著的那本创造性的著作《设计模式》以来,我就很少不用任何模式而设计软件了。实际上,我在软件设计的早期阶段花了相当可观的时间来定夺可和将来架构自然吻合的模式。毕竟,模式是经过时间和应用领域考验过的对一些问题的解决方案,那些问题已经被经验丰富的设计师、开发者和语言专家所解决。对任何一个正在进行软件设计的人员来说,善用可加以利用的知识和专家经验是明智的。而采用一个已被反复证明是成功的解决方案而不是从头发明一个新的往往是个好主意。
设计模式已经被编目归类以用于解决从细小问题乃至大规模架构级问题。本文将介绍几个流行的设计模式,在我自己的项目里,我发现它们很有用。尽管熟悉面向对象设计的概念有助于理解本文,但我并不假定你具备任何设计模式的预备知识。尽管任何适宜于面向对象开发的程序语言都可以用来阐明模式,但我将只用C#来编写例子【译注:但我不是( C#对应的C++的完整示例,以便于熟悉C++的读者进行比对(.NET类库细节,相反,我将集中于使用C#语言作为设计面向对象软件的工具。
C#和设计模式
C#是一个现代的程序语言,它通过提供直接映射面向对象设计概念的句法结构和语义支持来促进面向对象软件开发。这和C++大不相同,C++同时支持面向过程、面向对象和泛型编程。虽然如此,如果你是一名C++程序员,跟进C#是非常容易的。对于C++程序员来说,这个学习曲线是相当平坦的。即使你以前从未看过任何C#代码,理解本文示例代码也不应该有任何问题。事实上,如果你发现C#对设计模式的实现更为清晰,我也不会有任何惊讶,特别是如果你以前使用设计模式编写过代码的话。一般讨论设计模式的书籍和文章都会详细地描述模式所要解决的问题和上下文细节,并随后提供一个规范的解决方案的描述。本文不会那么严谨,我只关注模式本质,并辅以适当的C#示例来加以说明。
singleton。
singleton
MFC应用的开发人员(不管编写的应用是如何的小)都知道什么是singleton。singleton是类的唯一实例。使用MFC时,从CWinApp派生的应用类的全局实例就是singleton。当然,在MFC应用中,尽管规定不允许创建应用类的第二个实例,但是并没有什么可以阻止你那么做。【译注:实际上,不管是VC6.0还是VC7.0Beta2,它们的编译器都可以一定程度地限制你创建第二个实例。之所以说一定程度上,是因为诸如这种情况编译器并不帮你检查—试图在窗体的某个按钮事件里创建应用类的第二个实例】在这种情况下,当你需要某个特定的类表现出singleton行为时,一个更好的替代方案是让这个类自己负责确保只会被创建一个并且只有一个实例。再回到MFC,我们知道保证应用类实例的唯一性的责任被留给了开发应用的程序员,他(她)们必须小心不要创建应用类的第二个实例。
1所示的类。singleton的访问被局限于必须通过静态方法Instance。多数情况下,singleton应该具有全局可见性,这可通过将其创建方法public来实现。和用全局变量模拟singleton不同,这种模式可以防止创建出多余的实例,同时兼具全局可见性。注意,该类的构造器被置为private,这就意味着没有任何办法可以绕过静态方法Instance来直接创建类的实例。
表1
class Singleton
{
private static Singleton singleton = null;
public static Sing
您可能关注的文档
- DEBUG调试命令介绍【DOC精选】.doc
- DELPHI多线程编程【DOC精选】.doc
- delphi之多线程编程【DOC精选】.docx
- delphi服务程序编写【DOC精选】.doc
- Delphi数据类型及一些转换函数【DOC精选】.doc
- Delphi程序员代码编写标准指南【DOC精选】.doc
- delphi遍历循环【DOC精选】.doc
- DELPHI网络函数大全【DOC精选】.doc
- Denominazione di origine controllata【DOC精选】.doc
- Department of Environmental Science and Engineering【DOC精选】.doc
- 第40天 leaf~litre(词形转换+单句填空+熟词新意+写作应用+原创语填).pdf
- 第45天 mutton~noble(词形转换+单句填空+熟词新意+杭州第19届亚运会开幕).pdf
- 加纳:中国企业的战略投资枢纽-解锁西非增长机遇.pdf
- 第61天 soldier~square(词形转换+单句填空+熟词新意+China Daily原创语填)).pdf
- 广东省深圳市2024-2025学年高一下学期期中考试 政治含答案【KS5U 高考】.pdf
- 第14天 chapter~civilization(英汉互译+词形转换+短语提炼+单句填空+语篇填空).pdf
- 先进封装系列报告之设备:传统工艺升级&先进技术增量,争设备之滔滔不绝-华金证券.pdf
- 第09天bench~boatrace(英汉互译+词形转换+短语提炼+单句填空+语篇填空).pdf
- 第47天 office~ought(词形转换+单句填空+熟词新意+China Daily原创语填).pdf
- 第54天 quiet~reduce(词形转换+单句填空+熟词新意+China Daily原创语填)).pdf
最近下载
- 国开02047_政府经济学-机考复习资料.docx VIP
- 特殊教育:培智部五年级生活数学B卷.docx
- OBE理念指导下的软件实训课教学改革实践探索.docx VIP
- 安检现场处置单位广州民航王超58课件.pptx VIP
- (2025春新版本)七年级下册道德与法治知识点总结.pdf VIP
- 微软-2025-该年前沿企业诞生(英译中).pdf
- 2024年华为认证HCIE存储H13-629必备考试题库大全(含答案).docx VIP
- 房地产管理新加坡房地产经济.docx VIP
- T_CERDS 3-2022 企业ESG评价体系.docx VIP
- 2024年公安机关人员基础知识考试题库及答案 (新版).docx
文档评论(0)