用过了结构化编程,用过了面向对象编程。有时总会问自己,有时是别人问你,为什么要采用面向对象编程。可以说是因为至少在现阶段采用面向对象方法比结构法更符合人认识分析与理解事物的过程与方法。同样用过了面向对象编程又会有人要问为什么要用设计模式。在Head First第一章中有句话我认为说明了一些问题。“把模
式装进脑子里,然后在你的设计和已有的应用中,寻找何处可以使用它们。从原来的代码复用转为经验复用”。
针对上述两个问题打个不恰当的比喻:原来盖房子都是从制砖开始。然后一步步做。所有的都是每次从头来。这就像软件开发过程中的原始方法。有人说没有问题。有不少这样方法盖的建筑还保存完成,这样方法开发的软件也一直在用。可是现在突然有一群人听说你会建房子,都找你建。采用原来的方法是不能按期完成的。后来发明了砖(假设),有专人做砖。砌墙的只管如何砌好就行了。因为砖的规格都是一样的(理论上),后来门、窗子... ...都采用这种方法,也就是我们所说的堆积木方式。通过积木方式极大地提高了建筑与软件开发的速度。
在过了若干年后,有许多人采用积木方式搞建筑与开发软件了。但是却出现了一个的问题:虽然砖、窗子、门都是一样的。可是有的人盖的房子很漂亮很牢固,有的却很难看又不牢固,一场风雨就会倒。后来大多数人就采用盖的好的人的方法,都按他的方法建,或者在其基础上改进等等。这即是所谓的设计模式。武学里有万法归宗,其实在客观世界中也一样。一理通,百理融,这也是软件工程方法的来源。
不采用设计模式,你也可能建好一座房子,开发出一个好的系统或软件。但是,设计模式在于批量的经验复制,提高生产率。对于设计模式有几点要澄清:
1、有许多人包括我在内,起初对设计模式有种敬畏心理,以为是多高深的技术或技巧,其实设计只是方法的精炼,与平时的方法没有太多不同。
2、从没用过设计模式,不知道怎么弄。上面已经说了设计模式只是经验的精炼,有很多人在以往的开发中用过的一些方法(如解决数据连接的创建一个连接实例的方法),却不知道其实那就是设计模式中的一种创建型的单件模式。
3、设计模式不是万能的。不用它也能盖好房子做好软件,用了它不是一定就建好房子做好软件。错用滥用还可能把东西搞料,呵呵。
就先说这么多吧,继续学习!
----------------------------------------------------