实现领域驱动设计 - (EPUB全文下载)

文件大小:0.41 mb。
文件格式:epub 格式。
书籍内容:

实现领域驱动设计
第1章 DDD入门
第2章 领域、子域和限界上下文
第3章 上下文映射图
第4章 架构
第5章 实体
第6章 值对象
第7章 领域服务
第8章 领域事件
第9章 模块
第10章 聚合
第11章 工厂
第12章 资源库
第13章 集成限界上下文
第14章 应用程序
附录A 聚合与事件源:A+ES
参考文献
封底
第1章 DDD入门
设计不只是感观,设计就是产品的工作方式。
——Steve Jobs
我们都致力于开发高质量的软件。通过测试,我们可以消除软件系统中大量的bug。然而,即便我们的软件中没有bug,也不能表示我们设计的软件模型本身就是好的。软件中存在少量的瑕疵是无可厚非的,而同时,我们是可以设计出能够准确表达业务意图的软件模型的。
领域驱动设计(DDD)作为一种软件开发方法,它可以帮助我们设计高质量的软件模型。在正确实现的情况下,我们通过DDD完成的设计恰恰就是软件的工作方式。本书便是帮助你如何正确实现DDD的。
你可能是个DDD新手;也可能做过一些DDD尝试而目前正苦苦地挣扎着;还有可能你已经成功地运用了DDD。不管如何,你都希望通过本书来提高自己的DDD技能,我相信你是可以的。以下是本章的学习路线图:
本章学习路线图
• 了解DDD可以为你的项目和团队带来哪些好处
• 如何确定你的项目是否适合采用DDD
• 了解DDD的常见替代方案和它们将导致问题的原因
• 学习DDD的基础
• 学习如何向你的管理层、领域专家和技术成员推销DDD
• 了解使用DDD时所面临的挑战
• 看看一个正在学习采用DDD的团队是如何工作的
那么,你应该期待从DDD中得到什么呢?首先,DDD不应该是一个仪式性的过程,更不应该成为你项目进度的阻碍。此时你可以采用敏捷开发方法,或者寻找另外的方法来帮你更深层次地了解自己的业务领域。我们的目标应该是创造一个可测试的、可伸缩的、组织良好的软件模型。
DDD同时提供了战略上的和战术(Tactical)上的建模工具来帮助我们设计高质量的软件模型。.
我能DDD吗?
你是可以实施DDD的,如果你:
• 有开发卓越软件的激情和毅力
• 渴望学习和进步
• 有能力理解软件模式,并懂得如何应用这些模式
• 有发掘不同设计方法的能力和耐性
• 勇于改变现状
• 看重细节,希望亲自试验
• 希望编写更好的代码
DDD不是没有学习曲线,而且学习曲线有可能很陡。不用着急,本书将尽可能地为你降低学习曲线,我的目的就是挖掘你成功的潜能,帮助你和你的团队实现DDD。
DDD首先并不是关于技术的,而是关于讨论、聆听、理解、发现和业务价值的,而这些都是为了将知识集中起来。如果你了解公司的业务,那么你至少可以为DDD的通用语言(Ubiquitous Language)做出贡献。当然,你可能需要学习更多的业务知识。由于你对业务概念的理解,你已经开始走在DDD的康庄大道上了。
多年的软件开发经验能够帮助我更好地实现DDD吗?可能会。然而,你的开发经验并没有教给你向领域专家聆听和学习的能力。在实施DDD的过程中,你最好将那些不怎么使用技术语言的人加进自己的团队,此时你得仔细地聆听他们,还应该尊重他们的观点,并且相信他们比你了解得更多。
将领域专家引入到团队是大有好处的。
在实施DDD的过程中,你最好将那些不怎么使用技术语言的人加进自己的团队。就像你会向他们学习一样,他们也会向你学习。
可能你最希望看到的便是:领域专家同样得听你的。大家都是同一个团队的成员。领域专家不见得就知道所有的业务,他们也得学习。就像你会向他们学习一样,他们也会向你学习。你向领域专家提出的问题有可能暴露出他们不知道的地方。你将直接帮组团队更好地理解业务,甚至确定业务。
这样一来,团队中的所有成员都在学习和成长——是DDD使之成为了可能。
但是,我们还没有领域专家
领域专家并不是一个职位,他可以是精通业务的任何人。他们可能了解更多的关于业务领域的背景知识,他们可能是软件产品的设计者,甚至有可能是销售员。
如果你发现有人比你更加了解业务知识,找到他们,聆听他们,并向他们学习。
现在,我们已经开了一个好头。我并不是说技术不重要,而是说在本书中你得掌握领域建模中更高层次的概念。如果你的能力能够位于理解《Head First设计模式》[Freeman et al]和《设计模式》[Gamma et al]之间,或者你还学了一些更高级的模式,那么你已经具备很好的DDD基础了。在本书中,我将尽量顾及到各个层次的学习者。
什么是领域模型?
领域模型是关于某个特定业务领域的软件模型。通常,领域模型通过对象模型来实现,这些对象同时包含了数据和行为,并且表达了准确的业务含义。
不同角色的人都可以从DDD中获益,看看自己属于以下角色的哪一种:
• 新手,初级开发者:“我还年轻,有很多点子,对写代码充满了热情。但是我所在的那个项目简直让人崩溃,我才不想一毕业就被那些重复性的工作纠来缠去。这个项目的架构为什么如此复杂?这到底是怎么呢?我修改了一点代码,却破坏了更多的代码。有人知道这本来应该是什么样子吗?现在,我还得添加一些复杂的新特性。我在遗留代码之上添加了一个适配器来屏蔽那些难看的遗留代码,但是没有用。我相信除了整天写代码和调试外,还有更好的办法。于是有人向我介绍DDD,听说DDD是领域模型中的‘四人帮(Gang of Four)’,不错不错。”
• 中级开发者:“在过去的几个月中,我加入了一个新的项目,这次轮到我来做出改变了。那时,当我和高级开发人员在一起工作时,我发现我缺少对事物的洞察力。有时团队非常涣散,但是我又不知道其中的原因,我决定改变团队成员们的做事方式。我需要一种能够助我成功的软件开发技术。一个高级架构师向我推荐DDD,我打算了解了解。
听起来你已经是个高级开发者了,继续往下读。你超前思考的态度自然会得到回报的。
• 高级开发者,架构师:“我曾在多个项目中都使用过DDD,不过目前所在项目还未使用。我喜欢DDD战术模式的威力,但是我还打算应用更多的 ............

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » 实现领域驱动设计 - (EPUB全文下载)