`

转23种设计模式--开篇

阅读更多
第Ⅰ部分 开篇

开篇
转.NET设计模式开篇

——.NET设计模式系列之一

Terrylee,2005年12月06日

前言

加入Design & Pattern团队有几个月的时间了,惭愧的是从没有写过关于设计模式的随笔,得到wayfarer的同意,把企业库系列的随笔放在了团队的首页上。不是不想去写这样的随笔,也不是没有时间,自己初学设计模式,去写设计模式的文章,有点班门弄斧的味道。园子里吕震宇老师的《设计模式系列》和wayfarer的《设计之道》堪称设计模式里的经典之作。可是正如wafarer所说的那样,受到发表欲的蛊惑,本着交流就是进步的想法,思考再三,还是决定写这样的随笔,来对设计模式做一些探索和总结,起名曰“探索设计模式”,有些言过其实,就当是记录自己学习设计模式的历程吧,不过还是希望能得到各位前辈的指点!

设计模式

设计模式是规则吗?

地上本没有路,走得人多了也就成了路。设计模式如同此理,它是经验的传承,并非体系;是被前人发现,经过总结形成了一套某一类问题的一般性解决方案,而不是被设计出来的定性规则;它不像算法那样可以照搬照用。

设计模式是架构吗?

架构和模式应该是一个属于相互涵盖的过程,但是总体来说架构更加关注的是所谓的High-Level Design,而模式关注的重点在于通过经验提取的“准则或指导方案”在设计中的应用,因此在不同层面考虑问题的时候就形成了不同问题域上的模式。模式的目标是,把共通问题中的不变部分和变化部分分离出来。不变的部分,就构成了模式,因此,模式是一个经验提取的“准则”,并且在一次一次的实践中得到验证,在不同的层次有不同的模式,小到语言实现,大到架构。在不同的层面上,模式提供不同层面的指导。

设计模式,软件的永恒之道?

这个问题没有答案,有的只是讨论,看一下一位前辈结合建筑学得出的几点心得吧:

和建筑结构一样,软件中亦有诸多的“内力”。和建筑设计一样,软件设计也应该努力疏解系统中的内力,使系统趋于稳定、有生气。一切的软件设计都应该由此出发。

任何系统都需要有变化,任何系统都会走向死亡。作为设计者,应该拥抱变化、利用变化,而不是逃避变化。

好的软件只能“产生”而不能“创造”,我们所能做的只是用一个相对好的过程,尽量使软件朝向好的方向发展。

需要设计模式吗?

答案是肯定的,但你需要确定的是模式的应用是否过度?我得承认,世界上有很多天才的程序员,他可以在一段代码中包含6 种设计模式,也可以不用模式而把设计做得很好。但我们的目标是追求有效的设计,而设计模式可以为这个目标提供某种参考模型、设计方法。

我们不需要奉GOF的设计模式为圭臬,但合理的运用设计模式,才是正确的抉择。很多人看过GOF的《Design Patterns》,对这23 种模式也背得滚瓜烂熟。但重要的不是你熟记了多少个模式的名称,关键还在于付诸实践的运用。为了有效地设计,而去熟悉某种模式所花费的代价是值得的,因为很快你会在设计中发现这种模式真的很好,很多时候它令得你的设计更加简单了。

其实在软件设计人员中,唾弃设计模式的可能很少,盲目夸大设计模式功用的反而更多。言必谈“模式”,并不能使你成为优秀的架构师。真正出色的设计师,懂得判断运用模式的时机。还有一个问题是,很多才踏入软件设计领域的人员,往往对设计模式很困惑。对于他们来说,由于没有项目的实际经验,OO 的思想也还未曾建立,设计模式未免过于高深了。其实,即使是非常有经验的程序员,也不敢夸口对各种模式都能合理应用。[--摘自wayfare的设计之道]

后记

关于设计模式的理论性的文章,已经写了很多了,我不想再继续重复抄写下去,仅记录下上面几段话,用它来作探索设计模式系列的一个开篇吧。[现已更名为.NET设计模式]
分享到:
评论

相关推荐

    设计模式 C#23个设计模式

    C#设计模式通常涵盖23种经典模式,包括创建型、结构型和行为型三大类。 【开篇】中提到,设计模式并不只是理论上的框架,而是在实际编程中需要灵活应用的工具。就像武术中的少林拳,单纯模仿拳法的招式并不足以成为...

    C语言设计模式

    《C语言设计模式》是一份深入探讨如何在C语言中应用设计模式的宝贵资源,它涵盖了23种经典设计模式的实现。设计模式是软件工程中的最佳实践,它们是为了解决常见问题而形成的可复用解决方案。这些模式在面向对象编程...

    C语音设计模式

    开篇.pdf 继承、封装、多态.pdf 备忘录模式.pdf 工厂模式.pdf 模板模式.pdf 中介者模式.pdf 策略模式.pdf 观察者模式.pdf 桥接模式.pdf 装饰模式.pdf 抽象工厂模式.pdf 适配器模式.pdf 状态模式.pdf 代理...

    【课程思政案例】网络综合应用——PHP开篇--合作共赢.pdf

    这样的模式促进了全球工程师的协作,避免了资源浪费,也推动了像Android这样的开源项目成为行业巨头,改变了整个智能设备市场。 在课程实施过程中,教师将思政教育融入专业课程讲解,让学生理解如何在实际中实践...

    系统架构技能之设计模式-单件模式

    一、开篇其实我本来不是打算把系统架构中的一些设计模式单独抽出来讲解的,因为很多的好朋友也比较关注这方面的内容,所以我想通过我理解及平时项目中应用到的一些常见的设计模式,拿出来给大家做个简单讲解,我这里...

    设计模式的前奏----UML和设计模式的原则

    如果不能就不能好好理解设计模式,那么让我们学习认识这些图吧,下面我们开始这篇博客------设计模式的前奏----UMLUML(UnitedModelingLanguage),统一建模语言,是一种基于面向对象的可视化建模语言.UML采用了一组形象...

    iOS应用架构谈 开篇 - Casa Taloyum1

    本文将从“iOS应用架构谈 开篇 - Casa Taloyum1”出发,探讨iOS应用程序的常见架构模式以及如何构建高效、可复用的代码结构。 首先,iOS应用的视图层(View Layer)是用户界面的直接呈现部分,包括UIControls、...

    2024-开篇词:为什么你要学习网络规划设计师.pdf

    ### 2024年开篇词:为什么学习网络规划设计师? #### 一、网络规划设计师证书的价值 网络规划设计师证书具有极高的含金量,它不仅代表着持证人掌握了全面的计算机网络知识体系,还证明了其具备解决复杂企事业单位...

    C语言设计模式[归类].pdf

    目录1.C语言设计模式(开篇) 在软件开发中,设计模式扮演着非常重要的角色。好的设计模式可以帮助开发者编写高质量的代码,提高开发效率,降低维护成本。C语言设计模式是软件开发中的一种重要概念,它指的是在软件...

    界面设计模式第二版 原版

    《界面设计模式(第2版)》开篇即总结了“与人有关”的各类问题,为读者提供了界面设计总体思路上的指引,帮助读者举一反三。  接下来,《界面设计模式(第2版)》收集并分析了很多常用的界面设计模式,帮助读者...

    Java设计模式大全

    文档中特别提到了工厂模式,这是一种创建型设计模式,用于创建对象而不暴露创建逻辑给客户端,并且通过使用一个共同的接口来指向新创建的对象。工厂模式能够根据不同的输入,生成不同的类实例。这对于需要高度灵活性...

    界面设计模式

    , 同时,随着网络和技术的不断发展,本书在第1 版的基础上,更新了几乎所有的模式示例和说明,并新增了两章全新的移动应用和社交媒体设计模式,帮助读者在这两个新的领域从更高的起点开始设计。, 有效的界面设计,从...

    JavaScript设计模式之单例模式详解

    这一次重温一下《JavaScript设计模式与开发实践》,开篇为单例模式。 /** * pre 单例模式 * 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点 * 应用:单例模式是一种常用的模式,有一些对象我们...

    Android 设计模式MVC+MVP 视频资源

    "1、开篇.avi"很可能是介绍整个系列的开篇,讲解了为什么需要这两种设计模式以及它们在Android开发中的重要性。 学习和熟练运用MVC和MVP设计模式对于提升Android开发能力至关重要,它们能帮助开发者写出更清晰、更...

    无废话 C# 模式设计,整理自LoveCherry的博客

    本系列一共有20篇左右,除了介绍23种GOF设计模式中常用的一部分之外(一些设计模式的思想在C#语言中有了更简单的实现,一些设计模式不是很常用)还可能会介绍一些其它有用的设计模式。在这些文章中,我不会过多去说...

Global site tag (gtag.js) - Google Analytics