.NET设计模式(1):开篇

前言

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

设计模式

设计模式是规则吗?

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

设计模式是架构吗?

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

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

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

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

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

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

需要设计模式吗?

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

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

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

后记

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

时间: 2024-06-15 09:38:19

.NET设计模式(1):开篇的相关文章

设计模式:开篇

  最近在整理设计模式这个系列,这里做一下全局的概括.本系列的文章对于初识设计模式的朋友也许不太适应,对于那些了解过或者使用过设计模式的人比较适应,本系列的文章对设计模式的关键点做了一个终结性的陈述,也列举了相关例子方便理解和记忆,但是并没有循序渐进的讲解.譬如,在适配器模式中,博主阐述了适配器的定义.类图.案例等,但是并没有阐述类似"比如你买了一个港版的iphone6s,但是大陆的插座不并适合,需要一个转接口,这个转接口就是适配器"这样的语句来更形象的讲解相关内容.   虽然关于设计

这里有一份面筋请查收(二)

这里讲述下第二家公司的面试,这是一家大型互联网公司,简称W,一般像博主这样的传统行业去跳到这种公司简直是要跪舔的节奏,所以从一开始就带着一份敬仰之情去面试.由于和博主不在一个城市,所以一面选择电面,二三面技术面去了公司face to face, 最后一面是HR面.这里HR面就略过,只讲述技术类相关的问题. 一面 一面约好14:00,果然14:00就来电话了,这点可以看出管理上还是很厉害的. 1.linux下怎么查看文件内容? 如果看过前面一篇的小伙伴是不是已经知道答案了:cat tac more

[转载].NET设计模式(1):开篇

.NET设计模式开篇 --.NET设计模式系列之一 Terrylee,2005年12月06日 前言 加入Design & Pattern团队有几个月的时间了,惭愧的是从没有写过关于设计模式的随笔,得到wayfarer的同意,把企业库系列的随笔放在了团队的首页上.不是不想去写这样的随笔,也不是没有时间,自己初学设计模式,去写设计模式的文章,有点班门弄斧的味道.园子里吕震宇老师的<设计模式系列>和wayfarer的<设计之道>堪称设计模式里的经典之作.可是正如wafarer所说

设计模式学习:开篇

写这个系列笔记,顺便回忆一下,也可以和大家一起分享一下. 在学习设计模式之前,心里可能有一个疑问,就是什么是设计模式.在这里我先废话一下,我说明一下我对设计原则和设计模式的理解,因为个人觉得设计模式,是建立在设计原则的基础之上来的. 图1 结合图1,这是我个人觉得而已,原则就好像是基础,而模式是针对一些具体环境而生的应对的设计方式. URL地址:http://www.bianceng.cn/Programming/project/201602/49624.htm 其实上面的你可以忘了,我只是在瞎

无废话C#设计模式之一:开篇

什么是设计模式? 什么是少林拳呢?少林拳是少林僧人经过长期的总结,得出的一套武功套路.有一本叫做少林拳法的武功秘籍,上面记载这这套拳法的适用人群,打法套路和学成后的效果.设计模式虽然记录在了设计模式一书上,但是要真正掌握设计模式光靠看每一个模式的结构并且进行模仿是不够的.试想一下,在真枪实战的情况下,谁会和你按照少林拳法,一二三四的套路打呢?打套路也只能用来看看,只有当你能根据不同的场景灵活出招的时候才能说是学会了这套拳法.相似的例子还有三十六计,这也是一种模式,每种计谋都是针对不同场景的,如果

设计模式开篇

提到设计模式,我们会经常这样听说:"我也看过很多的设计模式,但在实际的项目中从来没有用过".这的确是我以及很多人遇到的情况,那些设计模式都能看懂,但就是在项目用不到,总感觉纸上谈兵,落实不到我们具体的项目上.  我的个人观点:  (1) 对设计模式的理解还不够深入      首先我们要对设计模式所要解决的问题要理解透彻,即什么样的场景适合用这个设计模式.然后就是这个设计模式是如何解决的?解决方式的亮点在哪里?如需求增多时,如何更好地扩展.设想一下,给出一个设计模式,你闭上眼睛能完整的说

设计模式之零:开篇

设计模式介绍    模式:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.     "模式"这个词是不局限于软件开发行业的,它几乎无处不在,它其实就是一种经验的积累,就象大多数人的教育经历都是从小学到初中再到高中再到大学,这也是一种模式,是中国的教育模式:现在越来越火的出国热,也是另一种模式,海外留学模式.因为GOF的<设计模式:可复用面向对象软件的基础>一书描述的23种经典设计模式,奠定了模式在软件行业的地位,从此人们提到"设计模式

WPF基础到企业应用系列1——开篇有益

1.开篇前言 关于本人--圣殿骑士刚入住博客园和51CTO写技术博客,目前主要在一家外资企业从事项目管理.技术架构及企业技术培训工作.由于工作和项目需要,所以对一些技术进行了较为深入的研究,之前在整个公司做过一些技术专场的培训,由于每次时间较短且人员较多的关系,没能讲得很透彻,所以挺对不住那些同事的.现在在园子里开一个博客,希望能把所学的微薄知识书写出来,以供大家参考.近期将针对这些培训专场推出"OO到设计模式"."WCF基础到企业应用"."WPF基础到企

《设计模式》学习笔记5——单例模式【高并发拓展】

定义 单例模式又称为单件模式,这个模式大概是设计模式中最好理解的了,我起初就打算从这里开始学,甚至还记过另一篇单例模式学习的笔记. 但是之后跟着<设计模式>这本书系统的学,就索性从第一页开始,而单例模式算是复习,也算是再深入的理解一次. 之所以要这么做,是因为上一次写的没有给出更标准的定义,同时,当时只介绍了基础的懒汉式和饿汉式,对于并发时候的单例却没有涉及,所以这篇学习的重点应当在于高并发时如何保证我们的单例依旧是单例. 单例模式引用书中的定义如下: 单例模式(Singleton Patte