不过没关系,我还可以做些亡羊补牢式的温习和思考,千万要记得,下次不要错过了。
1. 什么是设计模式
来源于建筑,解决常见问题的优秀方案 。











《设计模式》中引用Christopher Alexander的话说:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。
它们帮助设计者将新的设计建立在以往工作的基础上,复用以往成功的设计方案。
目的是将面向对象的设计经验作为设计模式记录下来。
设计模式使人们更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。
大师们的解释已经足够明了了。
2. 运用设计模式的最高境界






我觉得设计模式属于方法学的范畴。它的目的非常简单:帮助人们通过复用成功的解决方案或经验来解决实际问题。学习设计模式的有效途径之一就是在在实践中学习,在实践中理解,在实践中总结。我很认同dudu的观点,即:在编程中不知不觉地使用模式解决问题。这里的不知不觉有两种可能,一种是从未学习或接触过设计模式,但是在实际工作中却在不知不觉的使用它解决问题;另一种是对设计模式有深刻的了解,在思考和解决问题的时下意识的使用设计模式。我想最高境界里的“不知不觉”更倾向于后者,前者虽然在做着设计模式的事情,但还没有抽象到模式的层次,处于认识的混沌阶段。
3. 在程序中使用设计模式
--RoyDeng
关键是,我们是做项目,还是做产品。
--wayfarer
我觉得项目与产品开发真的不一样。
项目最重要的是进度,质量可以放后考虑。
--jeseeqing
模式便于理解代码和维护,对一个需要维护的系统,不应用模式,吃亏的是程序员。
--大坏蛋
模式的引入没有阻碍我们公司的发展,其实用好了才是关键。
--蝈蝈
首先,我必须申明:我认为,在程序使用设计模式并不会降低开发效率,相反,很多情况下,这恰恰是提高开发效率的有效途径之一。因此,我的观点是不管是做项目,还是做产品,也不管公司是否要求使用设计模式,自己在写代码的时候都应该有意识的使用设计模式。
对于旧系统的升级,也应该考虑设计模式的使用。当然没有必要把旧的系统全部推倒,只要从需要修改的地方重构就可 以了。这样一步步的来,就像滴在水杯中的墨水一样,最终墨水会扩散到整个杯子。
4. 使用设计模式需要重构代码,而没有TDD的重构又是危险和麻烦的,那么是不是所有的模块都要TDD呢?
其实TDD也是这样的,先写测试后来代码,保证所以的代码是因为有测试才出的。
--蝈蝈
但在设计过程中,我会在某些模块中应用TDD的方式。
--wayfarer
没有tdd,重构是很危险和麻烦的。
一些基础模块很需要tdd。
-- idior
wayfarer和idior的想法和我是一致的,那就是:不需要在所有的模块中都使用TDD,而是在某些模块,如基础类、业务类、数据访问类等模块使用TDD就可以了。
5. 设计模式在项目开发中对你们的帮助是怎样的?(wayfarer)
好的维护性和可扩展性。
--jeseeqing
我觉得最大的好处就是省写很多代码。
维护很容易,扩展容易。
--蝈蝈
提高我的生产力啊。
还有那种写很少代码就能实现功能的虚荣感。
--Zealot
维护性和可扩展性,适应未来的变化。
--idior
提高了开发效率。
--dudu