任何设计模式都只是工具

189 篇文章 403 订阅
188 篇文章 248 订阅

       《设计模式》从诞生之日到现在,已经走过整整15年!每当触及这本书,我就会想到一件事。1997年,我用非常巧妙的方法解决了一个程序上的难题,于是兴冲冲地找到名满Java界的大师Doug Lea,不无得意地向他“讲解”我那“史无前例”的解决方案。哪知他只是淡淡一笑,告诉我这个方案在1995年出版的图书《设计模式》中已有详细描述,并被命名为“Decorator”模式。失望是无可避免的了,乘兴而来,败兴而去,我开始读这本书。然后我大为震惊,这本书里到处都是妙不可言的想法,当然一些是我从不知道的,另一些是以前就了解的。更要为它叫好的是,这本书对每个模式都有详细命名和定义,有了这样一个统一的术语表,我们以后讨论这些想法就容易得多了

       然后近些年来,设计模式在一些技术圈子里遭到了不少非议。譬如Singleton模式,有人指责它增加了程序的耦合度,降低了软件的可测试能力。我想你必须记住的是,任何设计模式都只是工具,而你作为程序员的职责,就是在自己的工作中正确使用这些工具。如果因为我们自己的职责缺位,在软件设计中错用、滥用设计模式,从而对程序造成伤害,那么问题应该归于自己,这并不是设计模式的错,它本身的价值丝毫不能被降低。即便是遭受无数人的职责、声名狼藉的Singleton模式,其实也有很多正确用法。

       此外,你可能还听到过一种观点,认为设计模式的价值仅仅是用来弥补编程语言本身的缺陷,不过尔尔。我想我们是否更为宽容、正确的看法也许是:每个好的想法,都是在编写程序的过程中慢慢出现的,而随着时间的推移,这些想法逐步成熟、丰富,最后可以将设计模式融入到编程语言之中。

       我在2001年说过,每个程序员都应该自己有一本《设计模式》,因为它提供了包含所有巧妙的设计模式的清单,并清晰对应了相应术语,可以方便我们讨论问题。时至2009年的今天,我想这点没有变化,未来亦是如此。GammaHelmJohnson和已故的John Vlissides,这四位杰出的开拓者,改变了我们观察和讨论面向对象软件的方法:他们的成果——《设计模式》,经受住了时间的考验,是对软件历史的一个重大贡献。

 

【本文转自《程序员》2009年12月刊 特别专题:设计模式15年 

/Joshua Bloch  /罗小平

 

 

作者简介:Joshua BlochGoogle公司首席Java架构师,Jolt大奖获得者。他曾是Sun公司的杰出工程师和Transarc公司的高级系统设计师。Bloch曾带领团队设计和实现过无数的Java平台特性,包括JDK 5.0语言增强版和获奖的Java Collections Framework。他的著作包括:《Effective Java》、《Java Puzzlers: Traps, Pitfalls, and Corner Cases》、《Java Concurrency in Practice》等。

                 

【作者:刘伟   http://blog.csdn.net/lovelion

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值