我也设计模式——0.前言

这个也说模式,那个也说模式,老实说,没有一个把全部23个都讲明白的,除了GOF,毕竟人家是合写,每人写他最拿手的几个,所以人家那本书成功了;至于其他人,大多是只精通其中几个,于是就出书了,他那些不熟的模式就到网上抄一抄人家的,抄得好还可以,至少读者能看懂,抄得不好——不说了,跑题了。
最近在公司和老虎还有Will每周讨论几个模式,他俩是做c++的,我是做c#的,差别很多,但是在对模式的认识上,只要是oo的,还是有共识的。三周涉及了十个模式,发现讨论真是个好东西,比一个人在那里自己琢磨效果好很多。于是把讨论的精华贴出来,省得以后忘掉。
模式是艺术不是技术,犹如九阴真经的上册心法而不是武功,需要感悟,需要沉淀。我断断续续研究模式两年了,大致时间表如下:

2005.11 在上海书城翻出了甄镭版《.NET设计模式》,开始了我的模式之路。这本书,唉,没有源码,书上写的代码也不全,花了一个月看了前面忘后面,除了工厂和单件这两个名字概念,其他的都没记住。因为我当时还处于vb6向c#转型期,所以又去书城淘回来一本美国人写的《vb设计模式》,同时用vb6和vb7实现,讲解是简单中见深邃,看了个大概,没坚持看完,这次玩到了Observer和Facade。
2006.1-2006.2 这一期间在研究IssueVision,这个SmartClient用到了观察者和命令者,但是这两个模式的实现与书上讲的不同,更加巧妙。
2006.4-2006.5开始第2次模式之旅,这次是一个一个都啃下来了,并且还把simple factory和flyweight运用到自己的项目中。但是对一些模式的精髓还是一知半解,书里写的是一句话,看一眼就过去了,但是这句话里的深刻含义却错过去了。很多笔记都是当时做的,与此同时,对oo建模开始全面的接触,有了面向接口编程的概念,虽然从没用过。
2006.7 这个月在做一个SmartClient,发现Observer真是一个好东西,解决了窗体间通讯的问题。
2006.10 这个月停薪留职,在老家足不出户研究GOF原英文版的《设计模式》,再一次把23个模式过了一遍。收获颇丰,很多问题在书上找到了答案,接触到了MVC。
2006.11-2006.12 离职了,没有急着找工作,而是在把酝酿已久的一个项目写出来开源——网络大厅棋牌系统,基于C#的异步多线程Socket序列化通讯,其中摆牌是用flyweight设计的,整个系统用oo的思想建模,窗体通讯用的是observer,不同游戏用Strategy实现,Socket为了保持唯一使用了单件,总之1个半月不分昼夜的coding使我对oo及模式认识加深了。
2006.12-2007.2 这段时间找工作,经历了一场车轮大“面”,几乎都被考到了模式,观察者问得最多,又如生成器,抽象工厂与反射工厂。可以说,面试让我巩固了很多不是太熟的概念。
2007.3至今,在新的公司稳定下来,总结面试经验,发现自己对模式的UML图还很陌生,于是对23个模式又开始了新的一轮过滤,同时开始横向比较,即模式之间的联系与区别。

至于我这个栏位的Blog怎么写呢,我想,反正也不要出书,所以,每写一篇,基本是在公司和同事讨论的结果,同时在网上博采众家之长,横向比较,纵向加深。总之,把模式真正说明白是我的最终目的。

最后说明,我的讨论是基于.NET 1.4322的。

posted @ 2007-04-04 20:09  包建强  Views(908)  Comments(1Edit  收藏  举报