画册设计杂谈—千万别用设计模式

i未知 g2016-11-03


20年前,App设计领域的四位大师(GoF,Gang of Four,俗称“四人帮”,即Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides)通过著述《设计模式:可复用面向对象App的基础》这本经典之作,阐述了设计模式领域的开创性成果。
最近,在朋友圈看到朋友转发的一段马云的讲话。马云说:如果你发现你的朋友,长期做一件事,你观察他6个月,如果他还在做,你也刚好有需求,你就找他了解一下!如果他做了一年,还在做,说明这个事情肯定不错,你一定要找他好好了解一下!如果他做了3年还在做,而且越做越好,越做越努力,说明这个事情是他的目标,你一定要跟他一起做。如果他做了5年还是在做,而且不顾一切地做,说明这个就是他的生命,一个用生命做视野的人,你无论如何要跟上他,因为,只有跟上那些用生命做事业的人,才能带你去到比你想要去的更高的位置!因为如果不好,他早就不会做了,如果是骗子他也早都消失了!
看书有时候很无聊,大家不妨先来考察一下《设计模式》这本书的4位编辑,结合一下马云的讲话,看看他们是不是“骗子”,是不是早就消失了,是不是搞了 “设计模式”这个骗局之后就不干这一行当了。
下图中,4位编辑站成一排的照片是在1994年OOPSLA 大会上拍的。下面的大头照是我从GOOGLE搜到的最新的照片,当年的大师也扛不住岁月这把杀猪刀啊。大家不按照书的编辑顺序来,而是按照上面1994年拍的一张合影从左到右来。
 


首先是Ralph Johnson拉尔夫·约翰逊博士,生于1955年10 月7日,现60岁。他2015年在reddit上的留言道:我从1985年到2012年都是CS教授,然后退休后开了一家企业,负责构建一种最终用户可以编程的会计系统。最爱的编程语言是Smalltalk,最近几年用Java和Groovy多。1978年结婚,现在有3个小孩1个乖孙。其中有一个小孩当了码农。我觉得编程仍然是充满乐趣的事情,并且大部分时间都花在上面。
其次是Erich Gamma埃里希·伽玛博士,1961年3月13日生于瑞士苏黎世,现55岁。与肯特·贝克共同创作了JUnit;两人也曾共同投入Eclipse的开发与App架构设计。曾服务于IBM企业。2011年8月加入MicroSoft企业,负责Visual Studio Code的开发。从其github上的账号emamma来看,其开发提交活动依然非常活跃。
再次是Richard Helm博士,生辰不详。1988-1993年(5年)在IBM研究院Thomas J. Watson研究中心担任研究员。1993-1995年在DMR GROUP担任工程师。1995-2000年在IBM Consulting Group担任咨询师。2000-2002年在Boston Consulting Group的子企业Platinion工作。2002年5月至今在担任Boston Consulting Group的合作伙伴。根据其在领英的自我先容,他目前主要工作在于帮助客户利用最新技术提升他们的业务竞争力。
最后是John Vlissides博士,1961年8月2日生。1986年在斯坦福大学担任App工程师、咨询师、研究学者。1991年起,在IBM研究院Thomas J. Watson研究中心担任研究员。 2005年11月24日感恩节在家中因脑癌去世。当时消息出时,全世界各地的程序员也为此感到震惊,因为他时年仅44岁。
看完GoF的现况先容,有种什么感觉呢。
什么,感觉没有一位发财嘛。对的,学设计模式,发不了财。想发财可能需要去研究研究商业模式而不是设计模式。如果想通过学设计模式发财的,还是绕路吧。
什么,这么老了还在写代码。对的,谁说写代码只能是30岁之前干的活。想30岁之后写代码写不下去了,打算转管理线或者转产品旺的,其实也用不着学设计模式,还是省省别费那个脑力,绕路走吧。Ralph都当爷爷了仍然还在写代码呢,这是一种什么情怀啊。
什么,竟然没有出后续书籍。对的,人家觉得这一本就是经典,其他的只能是锦上添花。况且相关锦上添花的书海了去了,其实没必要凑这个热闹。
什么,竟然没有出来维护它。对的,网上有一些言论说它过时了,说它太难了。人家说,设计本来就没那么容易的。20多年前的Small Talk语言是面向对象语言的鼻祖的地位依然没有动摇呢。计算机系统也依然是N年前冯诺依曼体系结构,并没有发生任何变化啊。
20年多年了,有人说设计模式陈旧过时了,有人说设计模式太难了。大家回过头来看看2009年有一个对GoF三编辑的采访(采访详情,可以自己GOOGLE),Ralph说,大多数程序员都不是被聘请为编写一个可重用的App,但是你必须知道一个可重用的App是如何工作的,大家的模式是重用App的通用方式,如今他们还是有用的。App设计是难的,这也正使它变得有趣,善于App设计的人会从解决难问题中得到乐趣:将混乱变得秩序,克服困难。从编辑本身来说,他们并没有认为设计模式过时了,只是由于技术的进步,可能有些模式消失了或者变成一种隐性的存在,Ralph的话值得好好读上3遍。
 
二、设计模式不是灵丹妙药
 
有人说设计模式很好。错。设计模式其实是中性的,无所谓好坏。有些模式应用的较少一些,有一些模式在某些场景下还是反模式,比如Singleton。
有人说设计模式很复杂。错。有的模式其实非常简单,比如模板方法模式。有些比较复杂,比如访问者模式。平均而言,简单的模式比复杂的模式用的更多。
有人说小项目中没必要用设计模式。多小的项目算小项目呢,其实只要经过良好的设计,一个项目也可以不包含任何设计模式。但是也可能包含多个设计模式,但是跳过比较复杂的结构和行为模式,比如访问者模式或者责任链模式。
有人说使用设计模式需要熟练的开发人员。对于相对复杂的模式来说这个说法是部分成立的,但是绝对不是所有模式。
有人说使用设计模式会提升项目成本。不一定,如果设计模式使用得恰当的话。但是如果缺乏设计或者设计不良好,或者错误地(包括滥用)应用了设计模式,那肯定是会提升项目成本。
有人说设计模式会使得代码干净整洁。其实所有的代码都应该保持干净整洁,无论是否显式地应用了设计模式。
所以,设计模式不是万能的,它是中性的,不是所谓的灵丹妙药,如果不恰当地使用,反而会带来问题(比如设计臭味)。
 


广州先领品牌策划有限企业,以广州画册设计广州网站建设、广州微信营销、广州商业摄影为主要业务。您值得信赖的设计外包合作伙伴,咨询热线:020-36297911 

XML 地图 | Sitemap 地图