以美的名义——书评《企业应用架构模式》

原创 2004年07月09日 12:32:00
以美的名义
熊节

xin_3e760e26f29c42908c7a3d372c1f7fce_0724k2.jpg.jpg

  Patterns of Enterprise Application Architecture
  《企业应用架构模式》
  Martin Fowler
  电力出版社2004年4月影印版

 

 我有一双定做的休闲鞋,一只鞋上赫然写着“KISS”,另一只则写着“YAGNI”——这是程序员圈子里的“黑话”,也算是我对自己职业的一点炫耀吧,它们的意思分别是“Keep It Simple and Stupid”和“You Aren'tGonna Need It”。这是来自敏捷社群的两句箴言,我愿意把它们留在我的鞋子上,让它们随时提醒自己:不要过度追求程序设计的完美,因为我可能永远不需要那样一个完美的设计。

  然而,上个星期我却只做了一件事:对一个项目的业务层代码进行重构,将它的体系结构设计从Transaction Script模式变成Domain Model模式。如果说软件开发者应该始终选择可行所有方案中的最简单者,如果说编程的唯一目的是实现业务需求,我的这一行为恐怕将无法解释。也许唯一合理的解释,只能是对惟美的偏爱了。

  柏拉图认为万事万物都有一个完美的、先验的“理型”(eidos)存在,而我们眼见身受的事物无非是这理型的一个不完美的投影或者复制品———就像用模子烤出来的蛋糕。如果我们愿意传承这位先贤的世界观,那么在我手边的这本Patterns of Enterprise Application Architecture(PoEAA)就多少有些像是柏拉图所设想的“理型的花园”了。如果要为这本PoEAA设计广告词的话,我会说它“承载了Martin Fowler之于企业级应用开发的思想精华”———英文中的“idea”一词恰好源自希腊文的“eidos”,这也算是词源学的一次巧合吧。

  MartinFowler在面向对象社群素有“教父”的美名———我们当然还记得UML Distilled、Analysis Patterns和Refactoring。据说有位先生曾在一个技术研讨会的午餐时间与他的邻桌讨论OO技术,当他得知对方是Thought Works的员工时,立刻懊恼地说:“我竟然试图教Martin Fowler的同事OO技术,这简直就是木匠门前玩斧头、大江边上卖水了。”作为这个圈子里最著名的“传教士”,MartinFowler有一种常人所不及的归纳总结、提纲挈领的能力。很多“古已有之”的技术都是经过了他的点石成金,才真正在开发者的芸芸众生中流行起来———重构技术就是一个最好的例子,而最近的例子则是Dependency Injection模式。

  从他的作品中,我们可以明显地看出:Martin Fowler一直致力于为企业级应用开发者提供一套完备、自足的话语系统,一个理型的世界。Analysis Patterns告诉我们如何分析用户需求,Refactoring告诉我们如何改善代码质量,Planninge Xtreme Programming告诉我们如何规划敏捷的开发过程。这本PoEAA恰好是拼图的最后一块,它所记录的47个模式直指架构企业级应用时无法回避的那些问题。现在,Martin Fowler的信徒们可以完全用自己的一套话语来谈论企业级应用开发了。

  面对这本PoEAA,或许不少读者会冒出这样一个念头:为什么我要使用这些模式?——这个问题从前的版本是“为什么要重构”、“为什么要采用多层结构”,它们背后的潜台词是“为什么我要给自己增加这些麻烦”。实用主义的陈词滥调我们已经听得太多了:优雅的设计提升灵活性和复用性、使系统便于维护……噢,一边做着设计,一边还要考虑“这里是否需要灵活性”,我不认为自己有那么好的精力。在我看来,这里只有一个问题:系统是否呈现出一种内在的美。在我的系统中采用Transaction Script模式让我感到缺乏美感,所以我把它重构成Domain Model模式,这就是我的方式。

  我提到了“美感”,这是一种形而上学吗?软件开发的全部艺术就是权衡:在简单与复杂之间权衡,在一种方案与另一种方案之间权衡。如果把每个问题、每个权衡的利弊都考虑得清清楚楚,恐怕开发一个应用程序的成本会高得惊人。所以,很多时候我们更依赖自己的审美眼光,用平静的心去设计一个赏心悦目的系统。缺乏美感的程序通常也同时缺乏质量,从前曾经流行的“万能JSP”就已经充分证明了这一点。这本PoEAA就像一幅画卷,它向我们展示了具有美感的架构方案。如果能暂时抛开实用主义的立场,用审美的眼光去浏览这幅画卷,或许能引起你更多的共鸣。

  但是,请不要忘了,MartinFowler同时也是一位敏捷方法的鼓吹者。在他看来,过度设计、堆砌模式的系统同样是缺乏美感的。就像这本PoEAA,如果把这47个模式全部用在一个系统里,最终得到的只能是一堆臃肿不堪的垃圾。于是,我只好不时看看自己脚上的鞋子,在心里默念“KISS”、“YAGNI”,然后继续在完美与简单之间权衡。PoEAA给了我们优雅的设计方案,但它并不保证用这些方案能够得到具有美感的架构设计,你仍然必须不断地选择、权衡。在这个领域里,没有银弹。不然,还要我们程序员干什么?

从企业架构,看TOGAF为什么越来越重要?

什么是企业架构? 在“企业架构”上下文中,“企业”这一术语不仅可用来表示整个企业(包含所有信息和技术服务、流程和基础设施),而且可以表示企业内的一个特定领域。在这两个情形 中,架构可...
  • sun305355024sun
  • sun305355024sun
  • 2014年11月08日 16:27
  • 24634

企业架构研究总结(33)——TOGAF架构内容框架之架构制品(上)

4. 架构制品(Architectural Artifacts)       架构制品是针对某个系统或解决方案的模型描述,与架构交付物和构建块相比,架构制品既不是架构开发方法过程各阶段的合约性产物,...
  • dyllove98
  • dyllove98
  • 2013年07月02日 22:27
  • 4565

系统架构师谈企业应用架构之业务逻辑层

一、上章回顾 上章我们主要讲述了系统设计规范与原则中的具体原则与规范及如何实现满足规范的设计,我们也讲述了通过分离功能点的方式来实现,而在软件开发过程中的具体实现方式简单的分为面向过程与面向对象...
  • a1213239029
  • a1213239029
  • 2016年07月16日 10:14
  • 4493

【读书笔记】企业应用架构模式——并发、事务与锁

一、并发问题的产生 多线程/进程同时操作(读/写)同一数据 二、并发问题的种类 丢失更新(lost update) 第一类更新丢失(回滚丢失):   当2个事务更新相同的数...
  • yhmhappy2006
  • yhmhappy2006
  • 2012年08月23日 00:13
  • 1920

企业应用架构模式——Martin Fowler

  • 2007年12月10日 09:42
  • 4.52MB
  • 下载

Martin Fowler《企业应用架构模式》迷你电子书

  • 2010年07月13日 16:21
  • 2.28MB
  • 下载

《企业应用架构模式》中文版完整版电子书

  • 2016年07月27日 13:20
  • 9.1MB
  • 下载

[电子书] 企业应用架构模式

  • 2012年06月07日 10:57
  • 2.05MB
  • 下载

《敏捷软件开发》《企业应用架构模式》读后感

《敏捷软件开发》《企业应用架构模式》都是比较老的书了,出的时候我才刚上大学吧。当年看一定比现在看的收获大。 书里说的有些已经过时,有些已成为当今的常识,有些已被常用框架实现,有些还是经典。 ...
  • rowanh
  • rowanh
  • 2016年02月21日 00:40
  • 343

读 《企业应用架构模式》7 过程 VS 对象

读 《企业应用架构模式》7 过程 VS 对象 Author:zfive5(zhaozidong) Email:zfive5@163.com 今天和同事交流一下,过程与对象的区...
  • zfive5
  • zfive5
  • 2012年08月02日 23:31
  • 1508
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:以美的名义——书评《企业应用架构模式》
举报原因:
原因补充:

(最多只允许输入30个字)