- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于上下文图的策略性领域驱动开发
当应用程序渐渐变得浩大和简单后,很多面对对象建模的方法都达不到格外好的可伸缩性。上下文图是一种通用目的的技术,作为领域驱动开发大家族的一名成员,它挂念架构师和开发人员管理他们在软件开发项目中不得不面对的五花八门的简单性。与其他广为人知的?DDD?模式相比,上下文图可以应用在任何软件开发的场景中,在开发者进行策略性决策时,为他们供应一个高层视图,比如是接受全套的?DDD?实现,还是依据项目的特定条件进行取舍等。
在这篇文章中,我们将探讨界限上下文,以及如何在构建上下文图时应用它们,来支持软件开发项目中的关键决策。
多个模型共存
领域驱动开发花了很大力气强调一件事,即维护应用程序模型的概念完整性。要做到这一点,需要很多因素:
一种灵敏的流程,确保能从用户和领域专家那里频繁地获得反馈,
确保有若干领域专家在场,并且与他们开展制造性的合作,
(在应用和测试代码中)维护单一的、可共享的模型,并用通用言语精确地进行定义它,
营造一种开放透亮?????的环境,鼓舞学习与探究。
这些对于营造一个可以让高质量的设计富强进展的环境至关重要。即便是这样的环境,那些常见的?DDD?元素,比照实体、值对象、聚合,也会渐渐地构成一个简单领域模型。所以,假如不对模型的概念完整性进行妥协的话,传统的?DDD?方法也不能盲目地应用在一个无限大的领域模型中。
如图?1?所示,在?DDD?中,通用言语的关键责任是对模型进行完整性检查。无论是与领域专家的争辩,还是最终的实现代码,都可以通过使用相同的术语,并将领域学问清楚精确?????地进行定义,以此来保证团队中的每位成员可以共享都相同的领域学问和软件。
图?1.?通用言语应当是用于表达模型的独一言语。团队中的每位成员应当对每个特定术语达成全都。这些术语不能有歧义,也不允许在不同角色间进行翻译。
代码是表达模型的次要方式。虽然其他一些工件或许也能捕获需求或者局部设计,但是只要代码本身才会与应用程序的行为永久保持全都。不过这种看上去奇特的建模方式其实格外脆弱:假如满足了前面提到的四条要求,它能做到,但是不能被无限地扩展。真正让模型得以最大程度地扩展,并且不必牺牲其概念完整性的方法叫做“上下文”。
了解“界限上下文”
在领域驱动设计的世界里,“上下文”是这样定义的:????????“一个单词或一个句子所消灭的环境,这个环境会反过来影响它们的含义。”这段定义初看起来相当模糊。它并没有直接告知我们“上下文”的大小、外形或者其他什么特性。但是最终我们又发觉这个定义其实格外精确?????地描述了“上下文”是什么,假如要想窥得其全貌的话,或许还需要一些具体的例子。
示例?1:术语相同,含义不同
第一个例子很简约,它示范了在术语层面消灭歧义的情况。有些词汇依据不同的使用场景,会有不同的含义。
假设我们正在开发一个基于?Web?的个人金融管理程序(PFM)。该程序可能用于管理银行帐户(Account)、股票、储蓄,将来可能用于追踪预算和开销记录等等。
在这个程序中,领域术语“帐户”可能是指不同的概念。谈论银行的时候,一个“帐户”在规律上其实是“金钱的容器”;于是我们自然而然地为相应的类加上“余额”、“帐户号”等属性。但是,在“Web?应用程序”的上下文中,术语“帐户”会有格外不同的含义,它和用户的认证、可信度有关。如图?2?所示,相应的模型将是完全不同的。
图?2.?一个消灭歧义的简约场景:当术语“帐户”应用在不同的上下文时,它的含义可以是完全不同的。
这应当是我们在对应用程序建模的时候,所遇到的最简约的歧义场景了:一个术语,有两个与上下文相关的含义。这个问题的处理方法通常是在类的全名(类名或者包名)前面加一些前缀,以此来划分名字空间。但是在概念层面上,必需清楚我们在和两个上下文打交道,有时不同上下文之间的区分很大,足以防止开发人员犯错误,但有时这样的区分却格外微妙。
不过,在类名层面上处理问题的方式并不能用在全部的情况下:在银行的领域里,术语“银行帐户”或许已经存在了,但却有不同的含义;或者领域专家坚持使用“帐户”作为术语。此时切记不要创造一个特殊的两头这种的术语,或者在专家术语和代码之间引入一个“翻译层”。否则你将不得不面对两个独立的上下文。
绘制第一份上下文图
当歧义真的到来的时候,我们需要一种工具来让开发团队明白,应用程序中正存在着两个不同的上下文。“歧义”是通用言语的头号大敌,我们必需铲除它。衰退歧义的最好方法就是在上下文图中,将领域结构分拆在多个界限上下文中。
图 3. 包含两个领域上下文的上下文图
依据领域驱动设计一书的描述,上下文图是用于将上下文边界变得更清楚的重要工具。其基本的想法是在白板上画出上下文的边界,然后选择性地将相关类的领域术语填写在上面。它不是一幅绘制精致的?UM
您可能关注的文档
最近下载
- 制药工程制图习题集(第二版)于颖_课后习题答案解析.pdf
- 《建设工程施工管理》PPT课件.pptx VIP
- 义务教育版(2024)五年级全一册信息科技 第6课 判断选择用分支 教案.docx VIP
- 个人简历表格下载word(最新).pdf VIP
- Flexsim中文使用手册.pdf VIP
- 学习解读《水利水电建设工程验收规程》SLT223-2025课件.pptx
- 第八节可燃粉尘的爆炸.ppt VIP
- 视琦多媒体视觉训练系统使用说明书.doc VIP
- GB T 28749-2012_企业能量平衡网络图绘制方法_高清版_可检索.pdf
- 重庆秀山县公安局招聘警务辅助人员笔试真题2023(含答案).pdf VIP
文档评论(0)