几个月之前,王翔的新书《设计模式:基于C#的工程化实现及扩展》出版,并邀请我写推荐序,下面为全文:
且看《笑傲江湖》中风清扬的独孤九剑:有进无退,招招都是进攻,攻敌之不得不守。虽只一剑九式,却是变化无穷,学到后来,前后式融会贯通,更是威力大增。你料到他要出甚么招,却抢在他头里。敌人手还没提起,你长剑已指向他的要害,他再快也没你快。“料敌机先”和“活学活用”这八个字,正是这套剑法的精要所在。
设计模式可以当做软件开发中的独孤九剑。在软件设计中最大的敌人就是需求不断的变化,需求变化无休无止,软件交付日期也就无限期的延迟。我们无法做到以不变应万变,但如果能提前预见到一些变化,就能用很小的代价来应对剧烈的变化。GOF总结的经典设计模式虽只有23种,但不管是创建型模式、结构型模式还是行为型模式,归根结底都是在寻找软件中可能的变化,并封装这些变化。“料敌机先”为设计模式精髓之一,只不过这里的敌是需求的变化而已。
预测到了变化,我们需要运用抽象的手段对其进行封装,如何抽象、如何封装就需要具体问题具体分析,不能一概而论,从重构到模式是目前使用设计模式最好的方式。对于设计模式如果不能够做到灵活自如的运用,不仅威力大减,甚至于弄巧成拙,“活学活用”为设计模式精髓之二。
[阅读全文]