基本信息
编辑推荐
全国海关中心架构师、《程序员》专栏作者王翔倾力奉献.
充分挖掘C#语言高级特性
以简洁、直接的手段解决易变化的问题..
以工程化角度来阐释设计模式...
内容简介
计算机书籍
《设计模式:基于C#的工程化实现及扩展》基于C# 2.0的语法,试图将GOF 23中的模式以一种可工程化的公共库而非Example的方式呈现给读者。内容包括以下7部分。第1篇主要是概括性的介绍;第2篇创建型模式介绍通过将实例化职责委托他方对象的办法,隔离客户程序与具体类型实例化的依赖关系,保证客户程序(或者外部系统)获得期望具体类型实例的、同时不必发生直接的引用;第3篇结构型模式的重点在于如何通过灵活的体系组织不同的对象,并在此基础上完成更为复杂的类型(或者类型系统),而参与组合的各类型之间始终保持尽量松散的结构关系;第4篇行为型模式关注于应用运行过程中算法的提供和通信关系的梳理;第5篇主要介绍小颗粒度基础模式和应用案例;第6篇主要介绍应用全局的模式化的实现方法,包括现在已经被普遍应用的N层模式及某些关键性框架产品采用的“微内核”模式;第7篇主要是一些针对Web和Web Service领域的模式设计技术。
目录
导读
第1篇 预备知识——发掘用C#语言进行面向对象化设计的潜力
第1章 重新研读C#语言
1.1 说明
1.2 C# 部分语法内容扩展
1.2.1 命名空间(Namespace)
1.2.2 简洁的异步通知机制——委托(Delegate)
1.2.3 考验你的算法抽象能力——泛型(Generics)
1.2.4 用作标签的方式扩展对象特性——属性(Attribute)
1.2.5 用索引器简化的C#类型信息访问
1.2.6 融入C#语言的迭代机制——迭代器(Iterator)
1.3 可重载运算符(Overloadable Operators)与转换运算符(Conversion Operators)
1.3.1 The Day After Someday
1.3.2 用于有限的状态迭代
1.3.3 操作集合
1.3.4 类型的适配
1.3.5 小结
1.4 面向插件架构和现场部署的配置系统设计
1.4.1 认识.NET Framework提供的主要配置实体类
序言
我有幸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#语言进行沟通和讨论,书中存在的问题和错误也请您不吝指正。
高级架构师 王 翔
推荐序1
如果你要开发一个小型的系统,整个系统只有两三人,系统活不过五年,商业逻辑单纯,程序代码不超过万行,那么你随便做,影响不大。反之,若要架构大型系统,你需要慎思,套用模型与架构,将前人的经验当作基石,这样系统设计才不至于陷入发散。
然而,你不会一开始就做大系统,那样风险太高。因此,要练习,最好从小系统开始使用模型与架构,这样才能检讨与学习,日后方能在大系统中自如运用。
企业信息系统现今面临着大量的整合需求,需要提供深入的分析应用和灵活的应变流程。但系统整合的复杂度是彼此系统复杂度的乘积,系统间的安全、弹性、效率、扩充性、可用性……彼此互相掣肘,此时,企业需要接触广、想得深、能定方向的架构师。而熟悉设计模式是架构师的养成基础,要求对于问题的分类与解法有一定的认知。..
有经验的设计者们,抽象出系统开发的原则与标准问题的设计解法,而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,台湾恒逸资讯资深讲师,数据库铁人 胡百敬
推荐序2
且看《笑傲江湖》中风清扬的独孤九剑:有进无退,招招都是进攻,使攻敌不得不守。虽只一剑九式,却是变化无穷,学到后来,前后式融会贯通,更是威力大增。能料到他要出甚么招,反招却抢在他头里。敌人手还没提起,你长剑已指向他的要害,他再快也没你快。“料敌机先”和“活学活用”这八个字,正是这套剑法的精要所在。
设计模式可以当做软件开发中的独孤九剑。在软件设计中最大的敌人就是需求不断在变化,需求变化无休无止,软件交付日期也就无限期地延迟。我们无法做到以不变应万变,但如果能提前预见到一些变化,就能用很小的代价来应对剧烈的变化。GOF总结的经典设计模式虽只有23种,但不管是创建型模式、结构型模式还是行为型模式,归根结底都是在寻找软件中可能的变化,并封装这些变化。“料敌机先”为设计模式精髓之一,只不过这里的敌是需求的变化而已。
媒体评论
胡百敬
微软MVP,台湾恒逸资讯资深讲师,“数据库铁人”
作者从GOF 23种经典设计模式开始,带你走进模式的大门,小到细粒度的基础模式,大到粗粒度的架构模式,本书都做了详尽的讲解。如果您还在为了软件需求的无尽变化而烦恼不断,为了在软件设计领域更上一层楼而苦苦思索,希望本书能够带给您一些启发。..
李会军
微软MVP ,博客园专家,IT168专栏作者
本书很有特色的地方,就是以工程角度来阐释模式,相较纯粹的模式之说,则更具普遍的下手角度,C#语言的高级特性结合设计模式的经典思想,两者相得益彰。
王涛
微软MVP ,博客园专家,《你必须知道的.NET》作者...