写给那些不知道什么是“设计模式”的人
什么是设计模式?
就是设计方法。
在软件设计中,不可避免地要碰到一些设计上的问题,这些问题前人已经遇到过,并且总结出一些解决相关问题的方法,称这一系列方法为“模式”。
可能你会说,我不懂方法,也可以实现我的想法,把它变成相应的代码,并能正确的工作,既然有没有方法都能正确的工作,何必去“形而”上的学那些方法呢?
我承认,不会方法也能使你的代码正确的工作,但我们学习这些方法还是尤为重要。
你想想,几十年前建筑人员修房造屋只会人工将沙石水泥拌在一起,很少有大型建筑诞生,现在的建筑几乎都是用搅拌机自动将沙石水泥拌在一起,大型建筑到处都是(当然搅拌机只是提高建筑效率工具的一种)。
在这个例子中,我们需要的是均匀搅拌的沙石水泥,通过人工和机器都可以达到目的,但人工效率低,机器效率高。如果你是一个建筑人员,你又要去关心沙石水泥搅拌得是否均匀,又要关心墙面上的砖是否码得合符标准,这给建筑人员无形中带来了额外的思想负担。如果有一种方法能使沙石水泥自动地均匀地搅拌在一起,建筑人员不就可以只关心墙的质量了?
发明搅拌机的人真是聪明,他帮助建筑人员减少了这一思想负担,使他们有更多的时间去关心更大层面上的问题(只要搅拌机的质量是好的),即墙体的质量。这里引入搅拌机这一方法就是解决上面提到的问题的一种方法,我想取个名子叫“搅拌机模式”。
读到这里,你是不是想到了更高级的方法:如果能发明一种机器使它能自动地结合搅拌机混合好了的沙石水泥,加上墙砖,自动地在相应的地基上产生符合墙面标准的墙体(建筑工人可能要失业了),那么建筑这项差事就只需更高级的层面上人设计人员----建筑设计师就可以完成了。你可以把你的方法取个名字叫“自动墙体模式”。“自动墙体模式”就是解决墙体的自动生成问题,且质量可靠。
该总结一下了。不总结,永远不会提高。在前面,“聪明人”和“你”都分别想出一些办法----发明了相应的机器,来解决效率和质量问题,虽然发明机器花费了你不少时间,但它带来的回报是可关的,而且你的机器,你的方法,可以运用到别处的相关事项中去,这个花费是很值的。所以花点时间想一些办法,使我们从机械重复地低级劳动中解脱出来,或者用更简单的方法去处理那些低级劳动,并把这些方法总结,形成经验,以便以后同类事项也用这些方法去处理,是有很大价值的。
那么你在程序设计,软件设计中,是否经常发现有许多机械重复地劳动呢?你是如何解决的。想知道大师们是怎样解决的吗?请你读一读《设计模式》这本书吧,它使你受益非浅。
[注]:笔者,万建华,计算机及应用(本科自考),现为一名中学物理教师,网名ChinaITBoy,喜欢C++,常用VC++6 MFC,开发一些中小型应用软件。刚看了几页《设计模式》,觉得不错,好书不感独享,向大家推荐。因为自学,多为个人探导,对某些问题的理解定存在一些不妥、甚至错误的地方,希望大家来信指点,本人不甚感激。
[email protected]
本文地址:http://com.8s8s.com/it/it36342.htm