伍迷家园

让编程融入生活
随笔 - 79, 文章 - 0, 评论 - 1404, 引用 - 136
数据加载中……

小菜编程成长记(十四 设计模式不能戏说!设计模式怎就不能戏说?)

(续上篇)
         次日,小菜来到大鸟处。
       “大鸟,你在写什么东西?”小菜看到大鸟的电脑上开着记事本。
       “哦,我打算写篇博客,名字就叫《设计模式不能戏说?》”大鸟解释道。
       “嘻嘻,废话,这又不是电视剧《戏说XX》,可以乱讲不负责任,设计模式戏说了如何讲得清楚。怎么突然会想起来写这样的文章?”
       “你知道为什么《Head First Design Patterns》(深入浅出设计模式)一直没有翻译成中文吗?”大鸟不答反问道。
       “不知道,这本书国外出版好久了吧,得了Jolt大奖后,英文影印版在2005年国内也有出版了,近三年来一直不见中文翻译版本的出现,我也很奇怪,里面的英文其实也不算太难呀。”
       “这就是因为在国内有一种观念,设计模式是不允许被戏说的!”
       “戏说?那本书里写了很多生活中趣味的例子,又是鸭子又是匹萨店的,很有意思,我觉得这样写很生动,你指的戏说是这个?出版社不至于就因为这样而不翻译吧?”
      “谁知道呢,反正没出版我们只能自己去猜想原因了。”
      “不如你把它翻译了,去找出版社发吧,这书这么好,一定大大地有销量。”
      “小菜说得轻松。你可以想象一下这样的场景:我通宵达旦、卧薪尝胆、励精图治把这本书翻译完,欢天喜地、兴高采烈、手舞足蹈拿着稿子到了XX出版社,XX出版社的大编辑看了后说:‘大爷,您走错地儿了,到隔壁楼的出版社更合适一些。’于是我再怀着心神不宁、忐忑不安、焦急上火地跑到隔壁楼,却被门卫拦住,我抬头一看门牌——顿时怒火中烧、单脚蹬地,破口骂娘!
      “你看到了什么?”
      “儿童画报社!”

 


      “,大鸟,说相声呐,搞笑呀!怎么可能呢?这书只不过图文并茂,通俗易懂而已,讲得可是实实在在的设计模式。”小菜大笑说道。
      “怎么不可能,昨天一技术杂志社编辑找到我,说想和我约稿。我一想,最近教你的那些东西还很有意思的,也是我多年开发学习的经验积累,写写也不错。我问他能不能写成对话方式,他说不行,他们的杂志面向中高端用户,文章需要中规中矩。我觉得这其实也不算难,于是就写了一篇设计模式的文章。花了大半天时间,尽管去掉了以往对话中的调侃,算是很认真的正统了一把。不过正所谓当戏说已成习惯,想改都难。所以文章一给他看后,他很客气的说,‘您写得很认真,但是非常抱歉,不能采用’。”大鸟情绪开始有些激动,“我强压怒火,追问其原因,才得知是语言不专业、文章没深度,问他如何才叫语言专业,文章有深度。他给发了一篇样稿。小菜你可以看看?”
       “《设计模式*************应用》(省去标题多字)”小菜望向屏幕,读了文章标题,扫了内容一遍。
         …………
       “大鸟,这文章里面都是理论的东西,有点象论文,太深了,我看不太懂哦。”小菜实话实说,“不过,人家不是说了吗,面向中高端用户,我们这种菜鸟是没能力看这文章的。”
       “哈,小菜也够谦虚,这下你明白了吧,《Head First Design Patterns》是不能出中文版的,因为它竟敢把如此神圣的高深的设计模式,写得如此通俗浅显,连菜鸟都读得懂,实在是太不给专家们面子了。”大鸟说,“当然细细想想,我那文章的确语言啰嗦、内容粗浅,不能发表也是可以理解的。换位思考,人家办个杂志也不容易,怎能随便冒被骂浅薄的风险。”
         大鸟接着问道:“最近有听说过于丹这个人吗?”
       “哦,你是说那个被称为‘学术超女’,在央视的《百家讲坛》讲课的于丹吧,最近好象新闻里有什么‘十博士联名批于丹’的消息,不过具体是怎么会事不清楚。”小菜说道。
       “你有空可以去网上搜搜看,已经吵翻天了。那个所谓的十博士说要让在古典文学方面只有初中文化程度的于丹下课,并且为她的错误向全国人民道歉。你觉得是否荒唐?于丹讲的《论语》、《庄子》可能是有些地方解释不准确,举例有曲解,但和她将这些语录结合人生哲理和时尚元素,使得更多的人,特别是吸引了当下的年轻人去了解中国传统文化相比,贡献就远远大于瑕疵。实话说,《三国演义》我是读过的,所以听易中天讲不过是换种思路,《论语》《庄子》可真是没看过,我也相信现今99%的年轻人如果不是于丹是不会去接触这些老古董,现在于丹火了,孔子庄子也跟着就火了,这其实是大大的好事。”
      “是呀,年轻人也不是傻瓜。照本宣科的教育谁要听呀?我在大学里学了半年的面向对象,都不明白为什么要Object Oriented,这几天天天用设计模式,理解面向对象就深刻多了,我感觉面向对象的发明真的是奇迹。”
      “我不知道现在大学里是否讲设计模式,但我能想象,如果老教授上课开口就说:‘今天我们讲桥接模式。’下边先倒下三个睡觉的,‘这个桥接模式是一个非常有用的模式,也是比较复杂的一个模式。…………’,此时又倒下五个做梦去了。‘桥接模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化’,估计此时梦周公的人已经不下一半。…………‘艾水娇同学,请问今天讲什么设计模式呀?’老教授有些气愤,突然提问一个趴在桌上的学生。‘今天讲的是……是……’小姑娘迷迷糊糊站起来。‘是桥接!’一个很小的声音从旁边传过来。小姑娘听到后说:‘是桥接……桥接……,哦,是巧 结 良 缘 模式!’,众人大笑,老教授欲哭。”
      “我们以前上课老师就是这样照着书念呀,哈,那你说怎么上才好呢?”小菜问道。
      “吭,”大鸟摆出一副老师的样,清了清嗓子,开始讲道,“我想大家小时候都有用蜡笔画画的经历吧。红红绿绿的蜡笔一大盒,根据想象描绘出格式图样。而毛笔下的国画更是工笔写意,各展风采。而今天我们的故事从蜡笔与毛笔说起。…………呵呵,您是不是已经看出来了,不错,我今天要说的就是桥接模式(Bridge)。为了一幅画,我们需要准备36支型号不同的蜡笔,而改用毛笔三支就够了,当然还要搭配上12种颜料。通过Bridge模式,我们把乘法运算3×12=36改为了加法运算3+12=15,这一改进可不小。那么我们这里蜡笔和毛笔到底有什么区别呢?…………”(见吕震宇 的设计模式随笔-蜡笔与毛笔的故事
      “啊,这下子应该没人会去睡觉了,听故事比听模式好玩呀。”
      “如果只听故事,那又何必要花那么多时间和金钱上大学。通过故事,再讲设计模式的原理,从现实生活入手去理解复杂的设计模式就要容易得多,这才是关键。再举个例子,小学时候老师让你学英语背单词,老是记不住,可是自从有了红白机(游戏机),什么‘Start’、‘Game Over’记得比谁都牢,也是同样的道理。”大鸟解释道。
      “嗯,看来设计模式是需要戏说一下才会有劲,听得才会入味。就像于丹讲《论语》一样,如果都是正儿八经的解释字面含义,就没人看她的《百家讲坛》了。”
      “我也不是崇洋媚外,同样是好酒,茅台的广告实在是不怎么样,除了最早去国外摔瓶子外,一直没有太好的创意。人家XO那句‘让灵感不只是空想’听再多也不觉得腻味,而‘人头马一开,好事自然来’把那种在酒桌上的吉利话都说绝了,这一开‘人头马’,你说生意还做不成吗?同样道理,设计模式也是需要一些噱头的,天天都是正统的论文式文章,没意思不说,主要是不容易看懂呀。这么好的东西就因为没意思而推广不出去,多让人心碎哦。”
      “是呀,以前我刚听说设计模式的时候,去买了GoF的《设计模式:可复用面向对象软件的基础》,以为《葵花宝典》收为己有,一书在手,万事不愁,可我发现很多都不是太懂,理解不了。”
      “那可是设计模式四大名著之首哦!”
      “四大名著?”
      “哈,这是大鸟我的认为,《设计模式:可复用面向对象软件的基础》、《重构:改善既有代码的设计》、《Java与模式》、《重构与模式》我认为是设计模式的四大名著,本来想把《敏捷软件开发:原则、模式与实践》也列入的,但考虑到《Java与模式》是国人之经典,加之《敏捷》中还有敏捷开发等软件工程的内容,所以没有列入。”


       大鸟接着说:“GoF的书之所以位之首位,是因为他们第一次把设计模式系统的划分成了23个模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。尽管是95年的作品,但到现在为止,他们总结的模式仍然是最经典的模式,没太大变化。可惜这书却也是这几本书中最难读懂的一本。要我说,它的噱头最少,通篇都是精华,但由于晦涩难懂,这书也不知阻挡了多少有志青年学习设计模式的脚步。”
      “所以说,经典的也不是什么人都可以去读的,需要有初级,中级和高级读物。”小菜也总结道,“那你为什么不把《Head First Design Patterns》列入四大名著呢,它可是最受欢迎的设计模式书籍呀?要说戏说,我看《Java与模式》里讲故事的地方不比它少,又是西游记孙悟空,又是三国的锦囊妙计的。”
      “是呀,可它老是不被翻译成中文版,总感觉国人不认可它。其实在10年前,美国人也只认可GoF的论文式书籍的,可后来5年内他们发现,任何模式不是一来就想到并用上的,那往往会造成设计模式的过度使用,而通过重构逐步演化并合理应用一些设计模式,却可让程序达到非常好的效果,所以就有了《重构》,再过5年,他们感觉就算只是对程序论程序也不足以说明问题,所以就开始戏说了。于是《敏捷》中用了不少有趣的例子,而后就有颠覆性的书籍《Head First》系列,把技术书籍写得如同儿童画报一样的通俗。这可是伟大的进步。”
       “你的意思是,在国内还没有认识到这一点,所以依然还在如同美国10年前的论文方式?嗯,不管是书籍还是教学,国内的确都不足已达到与美国相提并论的程度。”
      “还好国内也有了类似《Java与模式》的好书,以及博客园内如吕震宇Bruce Zhang李会军、WebCast的李建忠等等这样为设计模式推广做出大贡献的朋友。所以小菜呀,好好努力,要想超过老美,估计靠写技术书是不行了,哪天弄出个什么设计模式小说、设计模式电影、设计模式话剧、设计模式相声等等才会有机会超英赶美呀!”
      “设计模式相声?不会吧你,你戏说过头了哦!”
      “哈哈,刚才那些什么电影、相声都是在扯淡,设计模式游戏,我却觉得是有可能的,利用多媒体技术,让程序员与电脑交互,达到学习的目的,这比老师直接上课效果还要好得多,由于每个人基础不同,理解力不同,用游戏可以教育效果最大化。好比美国军方都是利用电脑游戏来训练军人,而我们国家利用电视剧《亮剑》来教育军人展现精神,道理都差不多。”
      “哇!设计模式游戏,多么吸引人的东东。如果现在就有该多好!”
      “游戏哪是那么容易做出来的,首先要的是钱,不赚钱的事谁愿意投资呀?好了,和你说了那么多话,我气也消了,我决定修改那篇文章的题目,不叫《设计模式不能戏说?》了,应该叫《设计模式怎就不能戏说!》”
      “是,设计模式怎么就不能戏说呢?——把戏说进行到底,让设计模式的戏说来得更猛烈些吧。大鸟,加油!!!”

 

(待续)
注:本文纯属虚构,请不要对号入座,若有雷同,实属意外。另四大名著实在是伍迷一家之言,有不认可之处还望谅解。

posted on 2007-03-29 11:40 伍迷 阅读(6270) 评论(34)  编辑 收藏 所属分类: 面向对象小菜编程成长记

评论

#1楼    回复  引用  查看    


这就好像很多成年人bs动画一样, 这种固执,可能是为了维护自我形象,保持身份, 如果你和他理论,他是谈不出什么逻辑的, 他只有结论。

毫无疑问,大多数漫画都是高笑,但是作为一种表现手段,可以赋予任何有深度的内容,这从逻辑上是可以成立的,事实上,也真的有很多有深度,有内涵的现成品。

即使是戏说,同样也有可能抓住问题的本质,而不是等同乱说,只不过是改变表现的手段,又不等同于放弃内涵。固执的从表面去认识事物,就好像人们只需要一种性格,太样板化,脸谱化。从艺术的角度,是脱离人民群众的,是不富生命力的。
2007-03-29 12:43 | 航天奇侠      

#2楼    回复  引用  查看    

思想观念问题...传统形成了习惯,这个很难改变.
2007-03-29 12:49 | chy710      

#3楼    回复  引用  查看    

佩服楼主的毅力.

以前我接触到设计模式的时候,觉得这玩意真不错,接着就去看吕老师的博客,看<<java与模式>>,但是效果并不理想,最多能达到记忆的程度.追根就底, 我觉得我没有OO的基础.

意识到这一问题后, 我从Booch的<<面向对象分析与设计>>开始从基础学习OO, 后来看了<<敏捷软件开发:原则,模式与实践>>, <<重构>>,在后来看了<<重构到模式>>英文版,到现在的<<Head first Desgin Patten>>.

这一过程让我意思到,没有OO基础就去学设计模式,根本不理解.等OO思想日趋成熟后,再去看,你会觉得模式其实很简单.当然书的写作方式的确能加深对模式的理解,但我认为那也只是表面的.如果想真正理解并掌握模式,没有其他捷径,唯有OO基础.相反,如果OO基础好了,然后再加以润色的写作方式,效果倍增.

个人认为,其实学习模式只是一种手段, 设计模式重要,但是设计原则更加重要.如果你学了23中设计模式后,即使模式全忘了,但是却掌握了设计原则,那OO设计就要到家了.在以后的工作中,用这些设计原则去思考怎么设计你的领域模型,恐怕你自己也能重构到设计模式上来,这才是真正的设计境界.

楼主不如先戏说设计原则,再来戏说设计模式,那样会不会更好呢?
胡言乱语几句,如有不对,请不要介意!
2007-03-29 12:52 | lyb      

#4楼 [楼主]   回复  引用  查看    

@lyb
@航天奇侠
@chy710

说得没错,要做到无剑胜有剑,才是最高境界。
设计原则我其实已有两篇写了,《十》《十二》,当然这些原则还是要在模式中才能真正体会,所以不能图快,还得慢慢来。
OO的学习是一个渐近的过程,确实,如果继承多态,接口抽象类都没有搞清楚,理解设计模式是比较困难的,从这点讲,《小菜编程成长记》也不是没有基础的人都可以看的。
2007-03-29 12:57 | 伍迷      

#5楼    回复  引用  查看    

所以这几本书中,我最喜欢的还是<<敏捷软件开发:原则,模式与实践>>

因为她使我第一次认识到了设计原则.另外,李建忠老师的设计模式视频里面对原则的讲解也很透彻,特别是依赖倒置原则,他画的那幅图到现在都记得.
2007-03-29 13:17 | lyb      

#6楼    回复  引用  查看    

不过,过来look一下,学到不少!
2007-03-29 13:17 | OK_008      

#7楼 [楼主]   回复  引用  查看    

@lyb
你提醒了我,李建忠老师的系列也是非常经典的学习教程。我加上去了。
2007-03-29 13:21 | 伍迷      

#8楼    回复  引用    

看到这个系列的标题。。就忍不住进来看看。。。顶。。楼主。。
2007-03-29 13:42 | teana [未注册用户]

#9楼    回复  引用    

写写委托 代理 事件吧 总是不太明白 还有范型
网上有很多 但是说的肯定没有你说的引人入胜
2007-03-29 14:24 | Apple [未注册用户]

#10楼    回复  引用  查看    

关注。。。
2007-03-29 14:53 | Ame      

#11楼    回复  引用    

学的东西不少。。
2007-03-29 15:17 | 上网助手 [未注册用户]

#12楼    回复  引用  查看    

挺长见识的~
喜欢!
2007-03-29 15:24 | sekihin      

#13楼    回复  引用    

有趣啊。
2007-03-29 17:53 | 火狐 [未注册用户]

#14楼    回复  引用  查看    

虽然,搂主说的在我听后,有点幽默,但是细细品味,感觉真是如此,受益匪浅阿,向上面说的,对委托,泛型有点不太理解,期待着搂主的执笔!
关注,在关注
2007-03-29 19:08 | 兴百放      

#15楼    回复  引用    

每次来看楼主都很有收获阿
2007-03-29 22:36 | snowdoggie [未注册用户]

#16楼    回复  引用  查看    

呵呵.楼主说的蛮好.国外的文章最好的就在于有例子,废话多,所以比较好读.至于行文风格嘛,这个倒是因人而异的.我个人就偏向于论文式的行文风格,逻辑严密,层层递进,阐述也很清晰.就有点像有序数组,二分法就能轻松查找到自己想要的东西.至于国内的那种论文式的文章...呵呵,我看卖弄的成分居多,实作的成分偏少才是难读的主要原因吧.
2007-03-30 07:57 | 空明流转      

#17楼    回复  引用  查看    

@伍迷
继承多态,接口抽象类从何学起?
2007-03-30 08:28 | sekihin      

#18楼 [楼主]   回复  引用  查看    

@sekihin
推荐百度或谷歌,搜索“继承 多态”,搜索“接口 抽象类”,不会让你失望的,其实好书很多,不妨先学起来。
2007-03-30 08:46 | 伍迷      

#19楼    回复  引用  查看    

看lz文章 学的不仅仅是知识
2007-03-30 09:13 | ddr888      

#20楼    回复  引用    

呵呵,以后会有<戏说设计模式>么

#21楼    回复  引用  查看    

楼主写得非常好。
先顶一下

不过HeadFirstDesign Pattern没有拜读过。
建忠老师的东西非常好,喜欢
不过有的时候MS安排时间太长,导致有时候很多重复的废话,可能可以归结为强调

#22楼    回复  引用    

8知道《深入浅出设计模式》什么时候能有中文版.hoho
2007-04-15 21:05 | Timothy [未注册用户]

#23楼    回复  引用    

看到这篇精彩的成长记,我连饭都不想吃了,什么事都不想做,就想把它看完,写得太好了,是啊,现在很多教材都太论文化了,不好理解,其实书的意义就在于让人学到知识,而不在于用什么方式,为什么一定要论文化呢.只要能让人比较容易地学到书里的知识就是一本好书.谢谢你啊,小莱编程成长记的作者,给了我很大的信心,我现在很有信心把编程进行到底.哈哈
2007-04-24 22:11 | daigua [未注册用户]

#24楼 [楼主]   回复  引用  查看    

@daigua
感谢您对我写作的肯定,一同加油吧。
2007-04-25 08:12 | 伍迷      

#25楼    回复  引用    

会技术的高人有很多,但能把技术讲的如此通俗易懂的高人并不多,你是一个,谢谢~~~
2007-09-28 16:15 | d [未注册用户]

#26楼    回复  引用    

啥也别说了,head first 设计模式出中文版了。

好就一个字。
2007-11-19 11:56 | fenixshadow [未注册用户]

#27楼    回复  引用  查看    

真的不错,一口气看完了,相当通俗易懂,学到很多东西!
谢谢你,期待更多好文章!
2008-01-21 09:43 | tom385      

#28楼    回复  引用    

看来工欲善其事,必先利其器!!!
2008-01-24 22:37 | wy_cn [未注册用户]

#29楼    回复  引用    

终于看完了,脑子里有OO的概念了,谢谢楼主,顶你
2008-02-20 10:17 | stevegu1978 [未注册用户]

#30楼    回复  引用    

买了楼主的书在家里看,说真的 让我收获很大 我明白的自己的代码已面向过程或者面向事件居多,代码的耦合性太高, 我估计新人都差不多,脑袋里有点OO的思想,但是不能在写代码的时候灵活运用,希望楼主到后面能加点复杂的项目中经常运用的代码做例子,感谢楼主带给我们的好作品,期待ing。。。
2008-03-03 16:46 | 王皓 [未注册用户]

#31楼    回复  引用  查看    

很不错的文章 今天终于都完完了 收获的不仅是知识更是一种思想 甚至是一种生活态度……呵呵 期待楼主更多的文章Ing……
2008-05-28 10:49 | 念时      

#32楼    回复  引用  查看    

看完了系列文章,让我懂得了OO很多,同时也让我懂得了对OO还有很多不懂。期待更新...thanks a lot
2008-07-09 19:27 | afei929      

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-03-29 13:58 编辑过