科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用设计模式固化C#程序

用设计模式固化C#程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

通过提供一个框架,设计模式可以解决应用开发中的许多问题,使得设计过程更加清晰高效

作者:荣耀编译 来源:aspcool 2007年11月14日

关键字: 程序 C# 固化 设计模式

  • 评论
  • 分享微博
  • 分享邮件
译序: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#来编写例子【译注:但我不是J 我给出了和C#对应的C++的完整示例,以便于熟悉C++的读者进行比对J】,也借此来展示这门语言的威力。我不会讨论任何微软.NET类库细节,相反,我将集中于使用C#语言作为设计面向对象软件的工具。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章