《模式——工程化实现及扩展》再版前言

丛书内容

本系列在《设计模式——基于C#的工程化实现及扩展》的基础上充实完成,本系列本次版本面向C#开发者和Java开发提供如下4册图书:

· 模式——工程化实现及扩展(设计模式C# 版)

· 模式——工程化实现及扩展(架构模式C# 版)

· 模式——工程化实现及扩展(设计模式Java版)

· 模式——工程化实现及扩展(架构模式Java版)

 

其中Java版本采用ORACLE JDK 6的编码编码风格编写,面向Java SE & Java EE 5/6平台的专业人员;而C#版采用C# 3/4的编码风格和.NET Framework 3.5/4.0内置的类库编写,面向使用C#的专业人员。

设计模式版本仅介绍GOF 23个设计模式的内容,示例情景也主要面向进程内的类型设计;而架构模式部分则从分布式应用角度介绍部分典型的架构模式、数据访问模式、信息安全模式,尽管类型不同,但均为架构所必须的,所以统一纳入架构模式分册,其示例情景一般也存在跨进程调用,采用的也是分布式组件技术。

丛书定位

不管你拿起的是本系列的Java版本还是C#版本、是设计模式版本还是架构模式版本,它都不是面向入门者的读物

它的内容是面向中高级开发人员安排的,而部分章节后面的“自我检验”环节,则是针对希望进一步挑战模式技术的软件架构师设计的。

内容要点

本系列的重点不是阐述设计模式GOF和架构模式本身,这些内容应该从《Design Patterns : Elements of Reusable Object-Oriented Software》获得。本系列面向的是模式的实践者。它假设你已经熟悉Java或C#语法,能熟练运用Java 5/6和C# 3.0/4.0语法特性,并能充分发掘其中的实践价值,确保工作成果在JVM和CLR&DLR平台上更简洁、明快的实现。本系列还假设你对Java和C#的编译器有所了解,对于Byte Code或MSIL有一定知识,对于一些要点内容可以从Byte Code或MSIL层面对交付成果进行评析。

 

注:在没有其他说明的情况下本系列各册所指《设计模式》指的是《Design Patterns : Elements of Reusable Object-Oriented Software》,即翻译为《设计模式:可复用面向对象软件的基础》的这本书。

 

对于那些已经融入语言或开发平台的模式,比如:GOF中的原型模式、命令模式、策略模式、观察者模式、迭代器模式、访问者模式和架构模式中的MVC模式、管道过滤器

模式等,我们将尽量采用语言自身的机制完成,你可能甚至看不到明显的“模式”痕迹,模式的经典实现仅大体介绍模式意图后简要带过。毕竟,工程中“暴殄天物”不值得提倡。

设计模式和架构模式是对特定前提下重复出现问题的一个普遍解,它是一种思想,使用得当也会对设计、实施提供帮助,从这个角度看它又是实实在在的生产率。从始至终,本系列图书都务求采用最简单、最贴近工程的方式实现每个模式,书中示例的实现方式更多照顾到客户程序,希望客户程序使用时更简便、更方便,同时也会对《设计模式》一书的实现方式进行评析,分析哪些是需要坚持的,哪些是应该放弃的。

示例特点

首先,所有示例代码实现上保持简洁风格,不过考虑到设计模式要解决“变化”问题,所以示例在保持简洁到同时,也适当照顾到“应变”的要求。代码行文时,除非为了突出表示某个抽象接口,否则一行能写完的代码务求不写成多行。这么做主要来自3项非软件领域的启发:孔子的春秋笔法、爱因斯坦的质能方程以及八大山人的墨荷图。

经孔子整理的《春秋》可谓“微言大义”,寥寥数笔就能把我们现在需要长篇大论才表述的内容就铺陈出来,而正是这样的内容却能一直影响我们这个民族2000多年。

在物理领域,爱因斯坦的质能方程已经简单到简无可简的程度,但这个公式在现代物理学中的地位和作用怎么评论也不为过,原因在于“物理上真实的东西一定是逻辑上简单的东西” ,多余的赘述只会令方法和手段更加笨拙。

而八大山人也是秉承这种简洁风格的人中翘楚。我们知道西洋画中需要各种颜色的油彩才能体现出物体的质感和生动性,但八大山人的只用水墨两色就可以活灵活现的展现出画中人物、动物、植物鲜活的生命力,如下图 F1-1中的荷叶无论是脉络、色彩都活灵活现,而荷花寥寥数笔就体现出颜色的对比以及怒放的那种动感。

图 F1-1:八大山人《墨荷图》立轴

 

回想我们的编写代码未尝不该这样。

很多代码(注释不算)写的长篇累牍,但实际上是在重复制造JDK、.NET Framework或者团队其他成员的工作,而且这种冗长的代码还往往容易出错。我相信,只要有人的参与没有错误的IT系统中国没有、全世界也没有、往后说100年也不可能有,而冗长的代码恰恰增加了这种出错的可能

因此,本系列所有示例的编码上都尽量务求简单、直接、高效,不管是Java代码还是C#代码,不管是设计模式部分还是架构模式部分。

 

另外,在每个模式的实现方式上,针对不同的扩展主题本系列将始终沿用这样的优先级编码实现:

· Java和C#语法特性

· 官方Java SE JDK和.NET Framework的框架内容

· 个别情况考虑集成官方资助的开源框架

· 对于其他第三方提供的开源框架,不列入或引入本系列的实现示例

 

注:

本文中“官方”对Java指ORACLE、C#指微软

在没有其他说明的情况下本系列各册所指《.NET设计规范》指的是微软MSDN文档中发布的.NET设计规范《Design Guidelines for Developing Class Libraries》

如何阅读

本系列图书每章都会先对模式的经典介绍做简要评述,说明其主要意图和典型实现示例,然后会结合语言逐步扩充其使用情景,介绍典型的实现技巧。

 

为了便于读者使用,建议你按照如下方法阅读本系列各册图书:

1. 了解经典的面向对象设计原则

2. 熟悉所用编程语言的基础上,投入一定时间阅读“重新研读Java语言”或“重新研读C#语言”两章,了解工程化代码与“玩具代码”的实现差异

3. 然后,再阅读各章对模式经典内容的介绍,了解为什么需要这个模式、它主要解决什么问题、经典的实现是怎样的

4. 再次,阅读每章的扩展部分,熟悉不同示例环境下如何用更工程化的方式实现扩展要求。为了节省篇幅,书中代码只是代码片段节选,建议你直接运行示例代码,这样体会更深。

5. 分析和体会单元测试的结果。

6. 逐步结合你自己的项目修改示例代码,真正将书中的“工程化实现和扩展”融入你的实际工作。

 

为了便于你考察自己对于特定模式的掌握程度,本次再版时在部分章节增加了一个“自我检验”的练习环节,目的是通过一些准案例的介绍,让你灵活应用该章的知识内容,独立思考解决方案。由于解决方案会不断调整和优化,所有的参考答案会发布在我的个人博客,解决方案内容也会根据与大家交流的结果不断优化、动态更新。希望这种方式你能够喜欢。下面是我的个人博客,欢迎你常来看看:

 

CSDN http://blog.csdn.net/firevision/

博客园 http://www.cnblogs.com/callwangxiang/

ITEye http://callwangxiang.iteye.com/

最后,祝你有更好的阅读体验。

posted @ 2011-05-29 10:58  蜡笔小王  阅读(2678)  评论(35编辑  收藏  举报