关于设计模式的书也不算少了,网上关于设计模式的文章就更多了,用铺天盖地这一词也不算过分了。这些作者似乎也领悟了设计模式的真谛,写出来的文章模式也惊人的相似:给出某设计模式的定义和用处,再举例说明,最后再总结。不过还没有完,后面还有一大串评论:叫好的有,恍然大悟的也有;路过的有,挠头的也有不少。这些文章和评论说出了一个现实,我们都在学习设计模式,但很多人还不理解设计模式,精确点说是不理解其中一些设计模式。
我写了这么多年程序,还是个设计模式的外行,那下面让我这个外行说说我眼中的设计模式:
从一开始就让我不理解的是本来可以由一个类完成的事情,套用了设计模式之后,最后整出5个类甚至更多;本来10行代码就能完工,偏偏用了100行,难道设计模式的发明者是按代码行数来领工资的?但某些道理我还是明白的,一个人能做的事情和几个人能做的事情是大不一样的。摆一个地摊,进货摆摊吆喝收钱一个人足够了,可要是开了公司,一个人做老板会计采购销售人事前台客服,即使这个人样样精通都能把这些工作做下来,那这家公司的规模也可想而知了。同样的道理也适用于软件开发,一个"Hello World!“当然没有必要用设计模式了。
但问题似乎又不那么简单,即使公司内部实现分工,会计采购销售人事前台都有专人负责,如果老板不会组织、管理和协调呢?这样的公司同样开不长做不大。想到这里我更明白了,很多资深程序员可以用一个类编写一个较为复杂的功能,但他却无法分离程序中变与不变的部分,用不同类实现,让每个类各负其责,协同完成这项功能,从这一点来说,设计模式体现的是一个人组织和协调能力,当然也需要一些经验和悟性。