领域驱动设计(Domain-Driven Design DDD)——通过重构找到深层次模型2

五、应用分析模式

        深层模型和柔性设计并非唾手可得。想要取得进展,必须学习大量领域知识并进行充分的讨论,还需要经历大量的尝试和失败。在实际的研究领域问题实践时,有一些成熟的模式可以供我们借鉴和套用。这样我们可以从这个起点来重构和试验,虽然它们不是现成的解决方案。

        在《分析模式》一书中,Martin Fowler这样定义分析模式:
        分析模式是一种概念集合,用来表示业务建模中的常见结构。它可能只与一个领域有关,也可能跨越多个领域。

        Fowler提出的分析模式来自于实践经验,对于那些面对具有挑战性领域的人们,这些模式为他们的迭代开发过程提供了一个非常有价值的起点。

        在一个成熟的项目上,模型选择往往是根据实用经验做出的。这些经验可以帮助人们避免很多问题,分析模式的最大作用是借鉴其他项目的经验,把那些项目中有关设计方向和实现结果的广泛讨论与当前模型的理解结合起来。脱离具体的上下文来讨论模型思想不但难以落地,而且还会造成分析与设计严重脱节的风险,而这一点正是Model-Driven Design坚决反对的。

        分析模式是很有价值的知识

        当你可以幸运地使用一种分析模式时,它一般不会直接满足你的需求。但它为你的研究提供了有价值的线索,而且提供了明确抽象的词汇。它还可以指导我们的实现,从而省去很多的麻烦。

        我们应该把所有分析模式的知识融入知识消化和重构的过程中,从而形成更深刻的理解,并促进开发。当我们应用一种分析模式时,所得到的结果通常与该模式的文献中记载的形式非常相像,只是因具体情况不同而略有差异。但有时完全看不出这个结果与分析模式本身有关,然而这个结果仍然是受该模式思想的启发而得到的。

        但有一个误区是应该避免的。当使用众所周知的分析模式中的术语时,一定要注意,不管其表面形式的变化有多大,都不要改变它所表示的基本概念。这样做有两个原因,一是模式中蕴含的基本概念将帮助我们避免问题,二是(也是更重要的原因)使用被广泛理解或至少是被明确解释的术语可以增强Ubiquitous Language。如果在模型的自然演变过程中模型的定义也发生改变,那么就要修改模型名称了。

        很多对象模型都有文献资料可查,其中有些对象模型专门用于某个行业中的某种应用,而有些则是通用模型。大部分对象模型都有助于开阔思路,但只有为数不多的一些模型精辟地阐述了选择这些模型的原理和使用的结果,而这些才是分析模式的精华所在。这些精华化后的分析模式大部分都很有价值,有了它们,可以免去一次次的重复开发工作。尽管我们不在可能归纳聘个包罗万象的分析模式类目,但针对具体行业的类目还是能够开发出来的。而且在一些跨越多个应用的领域中适用的模式可以被广泛共享。

        这种对已组织好的知识的重复利用完全不同于通过框架或组件进行的代码重用,但是二者唯一的共同点是它们都提供了一种新思路的萌芽,而这种新思路先前可能并不十分明晰。一个模型,甚至一个通用框架,都是一个完整的整体,而分析则相当于一个工具包,它被应用于模型的一些部分。分析模式专注于一些最关键和最艰难的决策,并阐明了各种替代和选择方案。它们提前预测了一些后期结果,而如果单靠我们自己去发现这些结果,可能会付出高昂的代价。

六、将设计模式应用于模型

        设计模式与领域模式之间有什么区别?《设计模式》这部经典著作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值