Dealing with Roles(Martin Fowler)
这只是一篇小短文,讨论的重点是关于角色处理的知识,但作者从面向对象的基础知识出发,讨论了如何根据需求的不同,来进行不同的设计,并用实际的例子,演示了设计是如何变化的。这种思想和本文提倡的思想是非常的相似的,架构设计不能够独立于需求而存在。建议不论是对面向对象设计有兴趣还是对软件工程有兴趣的人都可以阅读此文。在Martinfowler的网站上可以找到本文,次外,网站上还有其它一些优秀作品,《Dealing with Properties》就是其中的一篇。我曾经为《Dealing with Roles》一问撰写了一篇读书笔记,发布在点空间上,如果有兴趣,也可以指导一二。
《Framework Process Patterns》(James Carey,Brent Carlson)
本书的作者是IBM公司的成员,他们有着面向对象操作系统和企业应用框架的设计经验,而后者,这是著名的IBM SanFrancisco框架。他们把框架设计中学习到的知识整理为过程模式的形式,书中并没有太多的理论,但处处都体现出了作者的丰富经验。在阅读本书的时候,要时刻牢记其推介的框架设计的特点,再结合自己工作的具体情况,来理解和应用这些模式。不要盲目的把书中介绍的模式应用于自身,这是我的忠告。本书的中文版由我和一位朋友翻译,将不日面世。
IBM Sanfrancisco 框架,这并不是一本书,而是一个现实中的产品。IBM根据市场经验,设计了一个企业应用框架,定位于为企业应用开发者提供通用的组件。从这个产品中,你可以充分的了解到模式是如何应用在一个成熟的产品中的。要了解这个产品的设计思路,关键是要先了解它的层次划分。SanFrancisco框架总共分为三个层次:Foundation Layer、Common Business Objects Layer、Core Business Process Layer。Foundation Layer定义了基础的类以及类的使用策略,例如工厂类来负责所有对象的创建;Common Business Objects Layer定义了企业中的一些通用对象,例如公司、帐户、客户等,而Core Business Process Layer定义了企业应用所需要的关键业务流程,包括会计框架、应收应付、订单处理、库存管理几个方面。这三个层次可以进行独立的重用,越高的层次的重用价值越大。在理解这样一个产品的时候,我们要有这样的思路,对于一个大型的产品来说,一致性有时候是重于其它的价值的,例如,在对象创建方面,产品统一使用了工厂模式,而在属性处理上,统一使用了动态属性的设计方式。虽然有些地方并不需要用到这两种设计模式,但是为了保持设计的一致性,还是必须使用该模式。这一点对于普通的项目开发或是小产品开发来说可能未必适用,但是对于大型的项目或产品来说就显得非常的重要了。

Applying Patterns(Frank Buschmann)这是一篇用过程模式语言来描述如何在实际中应用设计模式的文章。文章短小精悍,把设计模式的应用总结为几种模式,没有提供具体的实例是个遗憾。对正在学习设计模式的人而言,花一些时间了解别人是如何应用设计模式是很有必要的。在点空间上可以找到原文链接和繁体版译文。本文的架构愿景模式就参考了这篇文章中的内容。
重构(Martin Fowler)其实本书已经不用再介绍了,他的价值就在于他能够把程序员日常的很多优秀做法提升到理论的阶段,并为更多的程序员提供指导。这也是我在上文夸奖Martin Fowler具有优异的组织才能的一大原因。遗憾的是,本书一直没有中文译本,不过这个遗憾即将结束,候捷和透明正在合译此书,相信不久之后就可以一饱眼福。关于重构的另一方面的消息是,现在已经有越来越多的建模工具将重构作为重要的特性之一,这无疑能够为程序员节省大量的精力。
http://www.agiledata.org(Scott W. Ambler)这是Scott W. Ambler 最新维护的一个网站,也代表了Agile方法发展的一个方向――如何以敏捷的姿态进行数据库项目的开发。在读过站点的内容之后,你会了解到如何做好数据库项目的开发。目前,本站点还在Scott W. Ambler的维护下不断的更新。数据库设计一直不是面向对象阵营强调的一个重点,基本的观点认为,关键是类的设计足够规范,数据库并不是主要问题。但是在实际的项目中,数据库,特别是关系型数据库往往是无法忽略的部分,包括数据库模式的设计、性能优化、数据库连接管理、数据操纵语言。除此之外,遗留数据库、并发问题、安全,关系数据到对象的映射,业务逻辑处理,这些都是需要在架构设计的时候就加以考虑的问题。在本文中并没有专门的章节对数据库相关的知识进行讨论,因为数据库的讨论最好是结合具体的数据库进行。如果大家在架构设计中存在数据库方面的问题,可以参考这个网站。
Designing for Scalability with Microsoft Windows DNA(Sten Sundblad)目前关于讨论微软体系平台设计的优秀书籍不多,而本书正是其中之一。本书介绍了DNA体系下设计一个分层架构所要注意的问题。其核心思想是避免纯理论的面向对象设计。例如,书中在介绍领域对象的时候,建议将只读对象和可写对象分开处理,这样,只读对象就不需要COM+的支持,能够提高效率,但这是不符合面向对象的设计的封装思路的。另外,为了能够使用对象缓冲池技术,本书提议在设计业务对象的时候不要包括状态数据,这和类包括数据和行为的基本思路也是相斥的。从这本书中,我们可以了解到现实系统的设计和经典面向对象思想之间的辨正关系。
设计数据层组件并在层间传递数据(Angela Crocker、Andy Olsen 和 Edward Jezierski)这是另一篇讨论windows体系平台的文章。微软的产品适合于小型的开发,一方面和具体的技术有关,另一方面也和体系结构的设计有关。windows体系结构的特点是快速开发,因此在一些小型的项目中,使用微软产品的开发速度较快,但是随着项目规模的增大,快速开发伴随着的结构性欠佳的问题就逐渐显露出来了。因此,文章的主要内容就是如何优化结构。其主要的思路是对系统进行分层,并实现层间数据传递的策略。这两点不论是在哪一类型的体系中都是关键性的问题,在分层模式中,我们也曾经对这两个问题做了大篇幅的讨论。和Java体系相比,Window体系有其特殊的一面,也能够起到他山之石的效果。
EJB Design Patterns(Floyd Marinescu)本书分为两个部分,第一个部分重点讨论了如何在一个分层体系中应用模式语言,并分别针对架构设计、数据传输(即上一段中讨论的层间传送数据)、事务和持久性、服务端和客户端交互、主键生成策略等主题讨论了可能的设计模式。第二部分讨论了EJB设计过程中的实践活动和过程。虽然本文的所有内容都是针对EJB设计的,但是其思路同样可以借鉴于其它体系。本书的电子书在Middleware网站上可以下载到。