推荐序2
且看《笑傲江湖》中风清扬的独孤九剑:有进无退,招招都是进攻,使攻敌不得不守。虽只一剑九式,却是变化无穷,学到后来,前后式融会贯通,更是威力大增。能料到他要出甚么招,反招却抢在他头里。敌人手还没提起,你长剑已指向他的要害,他再快也没你快。“料敌机先”和“活学活用”这八个字,正是这套剑法的精要所在。
设计模式可以当做软件开发中的独孤九剑。在软件设计中最大的敌人就是需求不断在变化,需求变化无休无止,软件交付日期也就无限期地延迟。我们无法做到以不变应万变,但如果能提前预见到一些变化,就能用很小的代价来应对剧烈的变化。GOF 总结的经典设计模式虽只有23种,但不管是创建型模式、结构型模式还是行为型模式,归根结底都是在寻找软件中可能的变化,并封装这些变化。“料敌机先”为设计模式精髓之一,只不过这里的敌是需求的变化而已。
预测到了变化,我们需要运用抽象的手段对其进行封装,如何抽象、如何封装需要具体问题具体分析,不能一概而论,从重构到模式是目前使用设计模式最好的方式。对于设计模式如果不能够做到灵活自如地运用,不仅威力大减,甚至于弄巧成拙,“活学活用”为设计模式精髓之二。
然而,仅仅学会了剑法永远也无法达到武功的最高境界,正如学会了设计模式也无法登上软件设计领域之巅,要经过大量的实战才行,在实战中提高剑法,在实战中体会如何“料敌机先”,如何“活学活用”。《设计模式——基于C#的工程化实现及扩展》正是这样一本教你进行设计模式实战的好书,作者从GOF 23种经典设计模式开始,带你走进模式的大门,小到细粒度的基础模式,大到粗粒度的架构模式,本书都做了详尽的讲解。如果您还在为了软件需求的无尽变化而烦恼不断,为了在软件设计领域更上一层楼而苦苦思索,希望本书能带给您一些启发。
最后,特别感谢王翔为大家带来了这样一本设计模式的经典之作。
微软MVP,博客园专家,IT168专栏作者 李会军