学习模式之我见
设计模式做为程序员的“内功心法”,越来越受到.net 社区的重视,这种变化是很可喜的,Java社区走在了我们的前面,但这种状况也许有一天会发生改变。
在学习模式时,两种声音是一定会遇到的。
1、“无招胜有招,无招才是最高境界”;
2、“过分设计”。
这两种声音都是正确的,但如果初学模式者就惦记着这两条,却未必对你的学习和成长有利。
“无招论”者,强调设计原则是精髓,各种模式只是实招,做为一个高手,应得其髓,忘其招,决胜于随机应变中,于千变万化随心所欲中。此论调十分之正确,软件工程的巨人们归纳的设计原则是优秀软件工程的内在规律,模式是种种原则的具化,学模式者十分应该得此髓,特别是那些在每种模式中都能看到的原则,更应将你的思维与之绞合。
但初学者,请想想你是“武林高手了吗”先,在没有深入了解和体味了23种设计模式之前,你可以知道诸多设计原则,但你未必知道在设计中怎样去实现这些原则,怎样去结合这些原则。
“模式”就是模式,名字就意味着是“死”的东西,你还没有“入死”,就想着“出生”了,未免有超前之嫌。
“过分设计”论是典型的以辨证法从另一个方面思考模式的使用。辨证法太伟大了,几乎可以应用于所有的事情,当然它应用于设计模式也是合适的,“过分设计”也是一种正确和健康的观点。
不过就我的观察,生活中两种人比较喜欢使用辨证法,一种是有丰富经验的专家,一种是对一件事情根本没有深入根本不怎么了解的人。专家使用辨证法来看问题,使得他更“专家”,另一种人,就像一个还不会走路的小孩在想着“我不能跑得太快,会摔跤的”----不论他想得对不对,但这种想法于他学走路是丝毫无益处的。
“过分设计”还是等到你真的觉得“过分”了的时候再去想吧,你还“设计不足”呢,就想着“过分设计”为哪般呢?
还有些人,视设计模式为条条框框,与自己”热爱民主与自由”的理想相去甚远,但唐朝已去,李白不在,天马行空未必能有“飞流直下三千尺”的成就,还是老老实实,脚踏实地,先扶着墙走稳了先。