`

设计模式之我见(1):设计模式概述

阅读更多

(一) 概述

什么是设计模式:

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码实际经验的总结

(二) 为什么要用模式(模式到底能为我们做什么)

1、一个系统需求做的再好,分析再认真,没有好的设计也是不行的,因此,我建议大家关注DESIGN PATTERN,这是大家全面进步的一个机会,也是走向务实的道路。

2、复用考虑,某些模式可以增强被包装类的复用能力

3、有效的处理需求的变更,做到以不变应万变

4、设计模式可以减少各个分析类之间的耦合和倚赖。

5、最有效的学习别人经验的方法

6、可以使你的设计象专家做出来的一样。

7、带给你全新的设计思想。

8、更好的理解别人的工作。如果你不懂模式,别人的工作你可能看不明白。

9、使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性

(三) 模式在开发中的重要性

正如上面所说的设计模式的出现是为了解决项目开发中相同问题的不断出现的一个很好的解决方法的总结。它是项目维护升级时重要的基石。如果我们把项目比作成盖房子的话,设计模式就是一个一个方砖可拆可加可扩可收,设想下你的房子用泥去糊上的话显然属于一次性的产品,而其一旦出了问题。。。。(你敢住否)。一个项目特别这个项目是产品的话我们要尽可能的去做这些个设计,虽然我们付出了一些成本(方砖是由泥土烧化而成当然是需要成本的哈)但对这个项目来说呢多了稳健和可扩展性,大大降低了相同问题的维护量,程序员之间的交互更为模式化,何乐而不为呢,所以在项目中模式的运用是不可或缺的。

(四) 模式大体框架分析

我比较倾向与下面的分类方法,首先我们要去总结下设计模式到底分为哪几种类型每种类型到底使用来解决什么问题(这个会在每个模式讲解中一一体现)

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 414.75pt; HEIGHT: 127.5pt" type="#_x0000_t75"><imagedata o:title="模式结构图" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png"></imagedata></shape>

(五) 学习设计模式要具备的基本条件

俗话说得好“欲练神功必先自宫,就算自宫未必成功。”这话听起来很有意思,也很搞恶,但它确确实实的反应出很现实的问题。“欲练神功必先子宫” 先决条件,“就算子宫未必成功”这个就是结果的一种。不是你子宫了你就能练成绝世神功,也是需要看先天灵性和后天努力的。说了那么多废话,其实我想表达的意思很简单,设计模式很抽象进入的门槛也不是太高,但学完后能灵活运用的人不多。那么我们进入这个领域的先决条件有那些呢

² 面向对象编程思想,知道抽象、继承、多态3个核心内容概念

² 熟练使用.NET中的任意一种语言(以后所有示例都会用C#编写所以还是希望大家多了解点C#语言)要熟练使用接口、继承、多态、委托、事件等语言实现方法

² 熟悉UML建模

² 有一定的项目经验(我在看很多朋友在写关于设计模式的文章时都忽略了这点,从我个人成长的过程来看学习设计模式单单从理论上去学习不是什么好的方法,很容易让人思维定式,我们学习设计模式不是为了学而学,是为了用而学,学会怎样灵活的使用它,这个和个人项目经验有很大的关系)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics