每日一书|《分析模式》:只看一节,便拍案叫绝

杜甫诗云:“读书破万卷,下笔如有神”。开发者多读书、读好书,能打好基础、掌握实践、答疑解惑、拓展视野。正基于此,2021年11月1日起,CSDN、《新程序员》推出“每日一书”栏目,为你推荐精选好书,助力你的开发工作如行云流水。

《分析模式:可复用的对象模型》是老马(Martin Fowler)的第一本书,也是年代相当久远的一本书。他基于自己在上世纪八九十年代的从业经历,总结了很多行业的领域模型,抽象成了各种模式(老马最擅长的技能),铸就了这本书。

你可能会质疑,二三十年前的行业经验在当今这个日新月异的互联网时代还有借鉴的必要吗?诚然,互联网给很多领域都带来了翻天覆地的变化,如银行、保险、贸易、财务、医疗、教育、制造业等,但这些革新大多数还是在应用端(如销售渠道的扩充、信息更加容易获取等),处于中后端的领域逻辑并没有发生根本性的变化。因此,书中的这些模式对现在的我们不仅不过时,而且还相当有价值。

起初我对本书的内容并不十分了解,只知道当同事钟敬老师重新翻译后,它就一直位于我的购书单中。拿到手后按惯例先翻翻各种序和前言(顺便说一句,钟敬老师的译者序非常精彩),然后看目录,感觉第1章对我来说应该没什么用,于是直接翻到了2.1节。

该节举了一个电话簿的例子。人和公司都可能是电话簿中的一个条目,对应着电话号码、地址和邮箱地址。如果对这样的关系进行建模,如何处理人和公司这种共性呢?老马引入了参与方(Party)这个概念来作为人和公司的超类(或接口)。

图片

看到这里,我反手就拍了一把大腿,绝了

之所以叫绝,并不是因为这简简单单的一个抽象,而是从这一一个很常见但却很多人容易搞错或者忽视的抽象中,我看到了整本书的价值。

再继续往下读,当组织(公司)开始变得复杂的时候,就出现了组织层级模式和组织结构模式。把参与方模式和组织结构模式融合在一起,就产生了责任(Accountability)模,用来处理参与方之间的多种关系,如组织结构、患者同意书、服务合同、雇佣关系和专业机构注册等。

图片

因此,相信你已经可以体会我只看完一节后便激动不已的心情了。当时我按耐不住,仅用半个小时就翻完了全书。这几乎成了我看得最快的一本书。

我不需要记住每个模式的细节,只需要了解它讲了哪些领域的模型。相信以后当我被一个问题困扰的时候,翻开它,就会得到启示,甚至直接找到答案。

退一步说,就算随着时代的发展,某个领域的逻辑发生了根本的变化,这本书仍然很有用。这是因为,我们不仅能学到书中讲到的模式,更能进一步学到作者得出这些模式的思想方法。也就是通过逐层“抽象”的思维方法,建立能够抓住领域逻辑本质的模型。也就是DDD中所强调的“深刻”的领域模型。如果我们掌握了这一方法,那不论领域逻辑怎样变化,也不论哪个领域,就都可以应付了。

而在使用责任模式时,应对责任的约束规则我们有责任知识层模式。参与方如果有不同的类型,可以拿出参与方类型泛化模式,如果参与方有严格的分层机制,还有分层责任模式来应对。这使得责任模式既可用于层级化的关系,也可用于更复杂的网络关系。

责任中规定的职责可以通过运作范围模式来定义,可以将其理解为责任契约中的条款,类似于正在处理的订单项。当职责越来越多的时候,就可以使用岗位模式,对它们进行分组。

这一大堆没见过的新模式可能会把你搞晕,但我相信通过介绍你能感受到,作者循序渐进由浅入深地把需要多方参与的一个责任关系梳理得清晰无比,兼顾各种或简单或复杂的场景,读者可以根据自己所面临的问题,选择适合自己的模式

比如我之前曾经参与设计过一个权限系统,那这不就是一个典型的责任模式的应用嘛。什么ABAC不就是运作范围模式吗?什么RBAC不就是岗位模式吗?

此外,作者还结合自己的经验,给出了不同模式的应用场景示例,方便读者结合自己的情况进行代入。作为正在对一个传统行业的遗留系统做改造治理的咨询师来说,简直如获至宝。更完美的是,作者甚至直接给出了最合适的命名。

图片

作者: [美]马丁·福勒(Martin Fowler)
译者: 钟敬
编辑: 杨海玲
书号:978-7-115-54454-4
出版时间:2020-10-01

内容简介:
要开发复杂的企业应用,先要为业务领域建立准确而深刻的分析模型,本书不是通过简化的案例讲述抽象的理论,而是直接给出来自真实项目的复杂模型,并以“模式”的方式进行归纳。本书包括两部分:

第一部分介绍了来自人员与组织管理、观察与测量、存货与会计、计划、金融衍生品交易等多个业务领域的“分析模式”;
第二部分则给出一系列“支持模式”,用于将分析模型实现为具体的软件。

具有一定经验的架构师、业务分析师以及高级开发人员通过研读本书可以很快将书中的模式和思路应用于实践,有效提高开发水平。软件开发的入门者阅读本书尽管未必能立刻领悟本书的全部内涵,但也足以打开一扇通向新境界的窗户,为日后的提高奠定基础。

(声明:本文转载自人民邮电出版社IT专业图书旗舰品牌“异步图书”微信公众号。)

おすすめ

転載: blog.csdn.net/programmer_editor/article/details/121162414