我引用Steve Yegge在《程序员的呐喊》中关于设计模式的一段评论:
设计模式提供了23个漂亮的盒子,帮你整理你的衣柜,外加一系列扩展机制,好让你自己定义新盒子。对我们这些衣柜像狗窝一样,几乎没有盒子、袋子、隔板或者抽屉的人来说,设计模式真是大救星。我们只要改建一下屋子,把衣柜扩大4倍,眨眼之间它们就能变得和百货商店的货架一样干净了。
。。。
然而,设计模式本身不是特性。工厂不是特性,委托、代理、桥接也都不是,它们只是提供了漂亮的盒子,以松散的方式来转载特性。但是别忘了,盒子、袋子和隔板自己也是要占用空间的。设计模式也不例外。
变大是Java中无法回避的东西。Java就像是俄罗斯方块,不过积木和积木之间的空隙都填不满,结果只能越堆越高。
虽然《设计模式》的写作是对广大程序员的一记响亮的耳光——假设这个世界上只有C++和Java程序员。
Java语言虽然使用率高,但是其本身是有一定的缺陷的,就是啰啰嗦嗦。
有时候真的觉得Java是一个啰啰嗦嗦的女朋友。一个简单的功能,就比如hello world,她也要整出一大坨代码才能在控制台中输出这十个广大程序员熟悉的字符。
然而,设计模式在编程思想层面提供了一定的编程方式,就比如六大基本原则,以及诸如工厂模式、观察者模式、装饰模式等等。
这些设计模式虽然并不能够降低微观的代码量,但可以减少大量相似功能编写的重复,这就能够实现DRY原则,毕竟,重复是导致bug的一大原因。
最后,没有任何一种程序语言是完美无瑕的。
你可以说,php是世界上最好的程序语言。当然,如果你只会php,那么我会很同情的看着你,就像都德的《最后一课》中那位老师告诉我们法语是世界上最美的语言。
语言接触的多了,才能横向比较各个语言的优点和缺点,在哪些应用场景适用,哪些有欠缺。你可以说脚本语言的灵活以及在调用外部应用上的开发快速,也可以说静态语言的稳重、安全。
设计模式也一样,它不是设计来弥补某种语言的缺陷与不足,而是跳开特定的开发语言,在更高层次上去探讨应用程序的构建,以使得年轻的程序员们有一条快速构建应用程序的参考路径和设计范例。
当然,任何的模式都是可以打破,也是用来打破的。就像数据库设计中的范式,在特定场景需要通过反范式进行设计和规划。
加油吧,编程设计,在人工智能的奇点到来之前,还有相当长的路要走。
网友评论