2008年11月22日星期六

设计模式step_by_step(序)

学习是一件很简单的事情,只要有了合适的学习对象、环境(我们可以称其为资源)再加上持续的独立思考便慢慢会有成效。孟母三迁也是为了给孩子好的学习环境。中小学时有老师帮我们搜集整理资源,对于我来说,学习的过程非常顺利。进入大学后,这个搜集整理工作无人帮忙了,便放缓了学习的脚步近乎停顿。另外,面对知识的海洋,在“学什么”这个问题上也变得不知取舍、手足无措。

当VC用到一年、但始终停留在混乱的面向过程和面向对象混用的门外汉阶段时,我问自己有没有书教我们如何在一个具体的项目中使用面向对象思想,找了一些书却没有结果。于是继续拼拼凑凑的写着可怜的代码,没有提高。今天,突然看到武大计算机学院k_eckel写的关于设计模式的读书笔记,才知道原来我一直寻找的面向对象思想早就被前人总结出来,甚至在前些年风靡一时。当得知此事时,我不得不汗颜自己的编程实践太少,所以才进步缓慢。

下面摘抄一小段《设计模式:可复用面向对象软件基础》中的话(顺序有变):
本书中的设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。
它并不描述链表和hash表那样的设计,尽管它们可以用类来封装,也可以复用;也不包括那些复杂的、特定领域内的对整个应用或子系统的设计。书中讨论的设计模式仅仅包含了一个设计行家所知道的部分。没有讨论与并发或分布式或实时程序设计有关的模式。本书并不准备告诉你怎样构造用户界面、怎样写设备驱动程序或怎样使用面向对象数据库,这些方面都有自己的模式,将这些模式分类编目也是件很有意义的事。

如此看来,设计模式非常有局限性,但是(下面是k_eckel的话)“设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不是说记住了23种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财富),实际接受的是一种思想的熏陶和洗礼,等这种思想融入到了你的思想中后,你就会不自觉地使用这种思想去进行你的设计和开发,这一切才是最重要的。”

当然,在学习一个优秀成果的同时也认识到它的局限性是非常有必要的,上面列出的一系列局限也警示着不足、指引着拓展的方向。

没有评论: