王翔,软件架构师,主要从事.NET、XML、公钥基础设施的开发。专注于数据(尤其是
XML信息)的生产、加工、交换、提炼等过程。最近参与了一系列有关应用密码技术和
PKI环境保护信息系统数据安全的项目。
最喜欢数学,平常案头总是摆一本数学练习题。闲暇时间喜欢写作,通过发表多种技术文章与国内外同行交流各种数据应用经验。
项目间隙经常到各海滨城市徒步旅行、野外露营、出海航行、极限运动,这几年烹饪也渐渐成为个人主要爱好。
作者博客:http://www.cnblogs.com/callwangxiang/
本书立意明确,除了告诉你问题的类型与解法,还提供了可以立即演绎的程序代码。相信这本案头的工具书可以提供你一个不错的思维模式,帮你造就有弹性、能扩充、易维护的软件实体。
——胡百敬 (微软MVP,台湾恒逸资讯资深讲师,“数据库铁人”)
作者从GOF 23种经典设计模式开始,带你走进模式的大门,小到细粒度的基础模式,大到粗粒度的架构模式,本书都做了详尽的讲解。如果您还在为了软件需求的无尽变化而烦恼不断,为了在软件设计领域更上一层楼而苦苦思索,希望本书能够带给您一些启发。
——李会军 (微软MVP ,博客园专家,IT168专栏作者)
本书很有特色的地方,就是以工程角度来阐释模式,相较纯粹的模式之说,则更具普遍的下手角度,C#语言的高级特性结合设计模式的经典思想,两者相得益彰。
——王涛 (微软MVP ,博客园专家,《你必须知道的.NET》作者)
我有幸5岁开始学习编程。成为一名软件开发人员是从初中开始确立的一个目标。大学毕业后因为工作的关系,开始使用Visual C++、Visual Basic进行开发,并在师傅的教导下学习C#。初识C#的时候我总会将它和之前接触的语言进行类比,而且一直用C#以很生硬的方式完成工作任务。不过随着行业的快速发展,来自各方面的变化往往在项目中期就不期而至,在很被动地完成几个项目后,我开始寻找尽可能灵活应付这些问题的方法,Enterprise Library、《Design Patterns: Elements of Reusable Object-Oriented Software》和《Patterns of Enterprise Application Architecture》是对我帮助最大的三项资料。通过对它们的了解,我发现C#中充满灵性的内容——托管环境下的自由、灵活,我变得酷爱C#。
模式是一个非常有趣的话题,它是对特定前提下重复出现问题的一个普遍解答,它是一种思想,使用得当也会对设计、实施提供帮助,从这个角度看它又是实实在在的生产率。最近几年单位用.NET开发的项目越来越多,规模也越来越大,自己经常感觉到需要把一些内容记录下来,并在与同事、同行分享的过程中修正、提炼它们,这也是写本书的主要动力。区别于其他类似的图书,本书强调面向工程化处理,偏重具体实现,同时结合越来越普遍使用的XML技术及.NET 3.0+的技术进行了扩展和完善。在完成GOF4的23种模式后,我感觉到仅仅用这些“搭”项目是不够的,因此继续把一些架构模式、Web服务模式、成例补充进去。不过比较遗憾的是因为时间的关系,忽略了数据库模式、数据访问模式、集成模式。
您可以直接用示例代码做练习,关于本书的示例代码您可通过以下链接免费下载:http://bv.csdn.net/resource/sjms.rar。为了便于了解每个知识点,建议您使用TestDriven.Net逐个运行相关章节示例代码的单元测试,涉及数据库访问的时候,您还需要用到微软的Northwind官方示例数据库。
希望本书能对您的开发有所帮助,当面对各种“不可抗拒”的变化时,您可以从中获得一些启发,能够简洁并直接地应对它们。另外,希望有机会与您就模式和C#语言进行沟通和讨论,书中存在的问题和错误也请您不吝指正。
高级架构师 王 翔
如果你要开发一个小型的系统,整个系统只有两三人,系统活不过五年,商业逻辑单纯,程序代码不超过万行,那么你随便做,影响不大。反之,若要架构大型系统,你需要慎思,套用模型与架构,将前人的经验当作基石,这样系统设计才不至于陷入发散。
然而,你不会一开始就做大系统,那样风险太高。因此,要练习,最好从小系统开始使用模型与架构,这样才能检讨与学习,日后方能在大系统中自如运用。
企业信息系统现今面临着大量的整合需求,需要提供深入的分析应用和灵活的应变流程。但系统整合的复杂度是彼此系统复杂度的乘积,系统间的安全、弹性、效率、扩充性、可用性……彼此互相掣肘,此时,企业需要接触广、想得深、能定方向的架构师。而熟悉设计模式是架构师的养成基础,要求对于问题的分类与解法有一定的认知。
有经验的设计者们,抽象出系统开发的原则与标准问题的设计解法,而GOF于十几年前提出的23种模式是其中的佼佼者。但毕竟空有概念,仍难落实到你日常使用的程序语言中来。坊间许多图书作者利用不同的程序语言,例如C++、Visual Basic、.NET、Java等,实现GOF的23种模式,配合UML的模型说明,让你可以方便地应用在自己的开发环境中。
本书的作者王翔有多年的开发经验,参与过多个千万乃至十亿行代码的大工程,他将经验融于设计模式中,以C#重新实现了GOF的模式,同时加入了新近的设计想法,如SOA与Web Services等,以及相对于其他设计模式而言较新的.NET Framework实现技术,如泛型、3.0的WCF等。在本书中他除了正向地以C#展现多个不同用途的模式外,还提供了日后可重复验证与测试的单元测试码。
系统分析与设计是门艺术,问题的解法与何为问题是交织的,而各模式的搭配使用技巧不同,要领存乎一心,须要巧思与反复琢磨,方可有好的解法。本书立意明确,除了告诉你问题的类型与解法,还提供了可以立即演绎的程序代码。相信这本案头的工具书可以提供你一个不错的思维模式,帮你造就有弹性、能扩充、易维护的软件实体。
须要提醒你的是,抽象化的思考、封装与重用的设计神髓在心中,而不是落在纸上的程序代码,阅读此书时,不要停止在仅Copy and Paste程序代码。
——胡百敬 (微软MVP,台湾恒逸资讯资深讲师,数据库铁人)
且看《笑傲江湖》中风清扬的独孤九剑:有进无退,招招都是进攻,使攻敌不得不守。虽只一剑九式,却是变化无穷,学到后来,前后式融会贯通,更是威力大增。能料到他要出甚么招,反招却抢在他头里。敌人手还没提起,你长剑已指向他的要害,他再快也没你快。“料敌机先”和“活学活用”这八个字,正是这套剑法的精要所在。
设计模式可以当做软件开发中的独孤九剑。在软件设计中最大的敌人就是需求不断在变化,需求变化无休无止,软件交付日期也就无限期地延迟。我们无法做到以不变应万变,但如果能提前预见到一些变化,就能用很小的代价来应对剧烈的变化。GOF总结的经典设计模式虽只有23种,但不管是创建型模式、结构型模式还是行为型模式,归根结底都是在寻找软件中可能的变化,并封装这些变化。“料敌机先”为设计模式精髓之一,只不过这里的敌是需求的变化而已。
预测到了变化,我们需要运用抽象的手段对其进行封装,如何抽象、如何封装需要具体问题具体分析,不能一概而论,从重构到模式是目前使用设计模式最好的方式。对于设计模式如果不能够做到灵活自如地运用,不仅威力大减,甚至于弄巧成拙,“活学活用”为设计模式精髓之二。
然而,仅仅学会了剑法永远也无法达到武功的最高境界,正如学会了设计模式也无法登上软件设计领域之巅,要经过大量的实战才行,在实战中提高剑法,在实战中体会如何“料敌机先”,如何“活学活用”。《设计模式——基于C#的工程化实现及扩展》正是这样一本教你进行设计模式实战的好书,作者从GOF 23种经典设计模式开始,带你走进模式的大门,小到细粒度的基础模式,大到粗粒度的架构模式,本书都做了详尽的讲解。如果您还在为了软件需求的无尽变化而烦恼不断,为了在软件设计领域更上一层楼而苦苦思索,希望本书能带给您一些启发。
最后,特别感谢王翔为大家带来了这样一本设计模式的经典之作。
——李会军 (微软MVP,博客园专家,IT168专栏作者)