当前位置:新闻中心行业动态 → 正文

论模式在领域驱动设计中的重要性

责任编辑:editor004 作者:Jan Stenberg |来源:企业网D1Net  2017-03-06 11:33:20 本文摘自:INFOQ

最近在阿姆斯特丹举办的领域驱动设计欧洲大会上,Cyrille Martraire在其演讲中谈论到模式的重要性时表示,了解领域驱动设计(DDD)之外诸多现存的模式很有必要。

Ward Cunningham因其第一个搭建了wiki网站而为大家熟知,但同时他也是第一批对模式进行描述的人。这第一批模式关注于信息完整性,Martraire认为这些早期的模式都是分析模式,它们用于描述如何从业务层面来更好地理解问题。例如例外值模式,这个模式让开发人员可以从业务的角度来编写代码,而不用考虑特殊情况,如处理非法值或零值。另一个有意思的模式是诊断查询模式,这个模式认为一个对象应该能够描述其成为当前状态的详细过程,诊断功能可以被用来取代输出日志或查看故障的过程。例如,一个账户对象内有一百欧元,可以被追溯为由一笔美元以及一笔英镑相加而转换来的。

另一个模式的来源是四人组在90年代中期所著的《设计模式》。在这些模式中,Martraire找出了四个对模型化领域中概念及关系特别有用的模式:

组合模式,用于将对象组合成树形结构,可以让客户端以相同的处理方式来处理独立或组合的对象。 解析器模式,用于分析特定语言中的某个语句。 享元模式,使用共享来支持大量细粒度的对象。 策略模式,将算法逻辑从其调用中剥离。

Martraire在早期的职业生涯中也研究了Martin Fowler的《分析模式》一书。从这本书中他学到了一系列在零售银行、医疗、测量领域中使用到的新的模式。他认为通过学习各种模式并透彻了解其原理,就可以将它们应用到新的领域。然而,他强调,如果要获得进一步的理解,了解模式和其中理念发展的过程非常重要,而仅仅学习如今现存的模式是不够的。

如果你还不了解这些模式,那就该思考你是否认真对待了设计过程,或过于关注那些最新技术。一个例子是事件溯源(event sourcing),这个模式常被默认使用,这让一些只需要简单的增删改查模型就可以满足的代码,无谓地变得复杂。他建议花更多时间在领域模型的设计过程上,如果发现设计存在问题,那就多进行改进。Martraire认为,如果你每次遇到问题,都倾向于创建新项目,你最终只会创造出你自己都无法理解的模型。最后回顾整个设计,你会发现它们都只是增删改查模型。为了训练你的技能,并了解更多复杂模型,可以研究成熟的遗留项目,在这些项目中你能找到深层次的领域模型。

Martraire目前正在写《活文档(Living Documentation)》一书,其中介绍了如何利用注解来从代码中直接创建文档,用于描述领域驱动设计概念、用到的模式以及其他设计概念。

查看英文原文:The Importance of Patterns in DDD

关键字:领域模型设计模式

本文摘自:INFOQ

x 论模式在领域驱动设计中的重要性 扫一扫
分享本文到朋友圈
当前位置:新闻中心行业动态 → 正文

论模式在领域驱动设计中的重要性

责任编辑:editor004 作者:Jan Stenberg |来源:企业网D1Net  2017-03-06 11:33:20 本文摘自:INFOQ

最近在阿姆斯特丹举办的领域驱动设计欧洲大会上,Cyrille Martraire在其演讲中谈论到模式的重要性时表示,了解领域驱动设计(DDD)之外诸多现存的模式很有必要。

Ward Cunningham因其第一个搭建了wiki网站而为大家熟知,但同时他也是第一批对模式进行描述的人。这第一批模式关注于信息完整性,Martraire认为这些早期的模式都是分析模式,它们用于描述如何从业务层面来更好地理解问题。例如例外值模式,这个模式让开发人员可以从业务的角度来编写代码,而不用考虑特殊情况,如处理非法值或零值。另一个有意思的模式是诊断查询模式,这个模式认为一个对象应该能够描述其成为当前状态的详细过程,诊断功能可以被用来取代输出日志或查看故障的过程。例如,一个账户对象内有一百欧元,可以被追溯为由一笔美元以及一笔英镑相加而转换来的。

另一个模式的来源是四人组在90年代中期所著的《设计模式》。在这些模式中,Martraire找出了四个对模型化领域中概念及关系特别有用的模式:

组合模式,用于将对象组合成树形结构,可以让客户端以相同的处理方式来处理独立或组合的对象。 解析器模式,用于分析特定语言中的某个语句。 享元模式,使用共享来支持大量细粒度的对象。 策略模式,将算法逻辑从其调用中剥离。

Martraire在早期的职业生涯中也研究了Martin Fowler的《分析模式》一书。从这本书中他学到了一系列在零售银行、医疗、测量领域中使用到的新的模式。他认为通过学习各种模式并透彻了解其原理,就可以将它们应用到新的领域。然而,他强调,如果要获得进一步的理解,了解模式和其中理念发展的过程非常重要,而仅仅学习如今现存的模式是不够的。

如果你还不了解这些模式,那就该思考你是否认真对待了设计过程,或过于关注那些最新技术。一个例子是事件溯源(event sourcing),这个模式常被默认使用,这让一些只需要简单的增删改查模型就可以满足的代码,无谓地变得复杂。他建议花更多时间在领域模型的设计过程上,如果发现设计存在问题,那就多进行改进。Martraire认为,如果你每次遇到问题,都倾向于创建新项目,你最终只会创造出你自己都无法理解的模型。最后回顾整个设计,你会发现它们都只是增删改查模型。为了训练你的技能,并了解更多复杂模型,可以研究成熟的遗留项目,在这些项目中你能找到深层次的领域模型。

Martraire目前正在写《活文档(Living Documentation)》一书,其中介绍了如何利用注解来从代码中直接创建文档,用于描述领域驱动设计概念、用到的模式以及其他设计概念。

查看英文原文:The Importance of Patterns in DDD

关键字:领域模型设计模式

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^