`
chelsea
  • 浏览: 121394 次
  • 来自: ...
社区版块
存档分类
最新评论

领域驱动设计: More Practice

    博客分类:
 
阅读更多


DDD的关键问题是如何识别缺失的领域概念. Eric的书里提供了一些方法, 比如倾听表达用语, 检查不协调之处, 研究矛盾之处等等. 我们需要更多的实践来捕捉缺失的概念.

新实践: 检查更换编程框架对代码带来的影响.

这个实践基于以下的理念: 业务逻辑没有发生变化则领域模型也不应该变化. 因此如果更换编程框架造成了大量业务代码的变动, 则意味着有概念没有被封装在领域层.

这里并非鼓吹要应用程序可以支持动态的切换编程框架, 比如从一种ORM工具切到另一种, 或者从一种MVC框架切到另一种. 这里强调的是领域模型及领域概念应该独立于编程框架来表达, 虽然最终模型需要通过某种关联或适配被框架来调用.

举个例子. 公司在为客户提供不同的服务之前, 需要按照法律跟客户签署一系列的协议. 这可以是一个 legal compliance 的 sub domain. 如果客户没有签署协议, 则系统拒绝提供进一步的服务. 如果系统是一个网站, 则检查客户的协议签署情况以判断是继续提供服务还是拒绝的逻辑可以放在Filter中(几乎所有web编程框架都提供了基于管道和过滤器的架构). 但如果这样的话, 当我们更换web框架时需要把这部分逻辑挪到新框架下的filter中. 因此更好的做法是把这部分逻辑挪进领域模型, 可以建模成规则, 来表达每一条需要遵守的法律约束, 最终可以用领域层的管道和过滤器连接起来.

我们不必真的更换编程框架, 只需假象一下. 之前有类似的实践, 是假想需要为系统提供不同的UI, 比如一个Web UI和一个命令行UI, 来促使业务逻辑不要和UI代码耦合在一起. 实践是类似的, 角度不同.

 

新实践: 关注对基础类型的操作.

频繁操作基础类型, 尤其在不同的场合以同样的方式来操作基础类型, 通常意味着领域概念的缺失. 比如字符串类型. 如果你发现经常需要取字符串的某一段或者定位某个特定子串, 则很可能是把领域概念编码在作为实现的字符串身上了. 事实上, 除了在输入输出或者Context的边界交换数据时, 不应该有任何字符串的操作.

另一个例子跟我司面试题有关, 计算金额时的舍入. 如果舍入是某种会计规则所明确要求的, 则应该对其显式建模, 而不是直接在计算时用些round()函数来隐式的表达.

 

Working on more practice...

分享到:
评论

相关推荐

    读书笔记:Thread Practice 实战Java高并发程序设计视频.zip

    读书笔记:Thread Practice 实战Java高并发程序设计视频

    Programming: Principles and Practice Using C++ 2nd

    Programming: Principles and Practice Using C++ 第二版 Bjarne Stroustrup epub版

    Kalman Filtering: Theory and Practice Using MATLAB

    它被广泛应用于导航、控制、信号处理以及经济学等多个领域。卡尔曼滤波的基本思想是基于动态系统的模型以及对系统状态的先验估计,来最小化估计误差的均方差。 #### 理论基础 1. **线性系统模型**: - 卡尔曼滤波...

    Code Craft: The Practice of Writing Excellent Code

    ### 《Code Craft: The Practice of Writing Excellent Code》核心知识点概览 #### 一、书籍基本信息 - **作者**: Pete Goodliffe - **出版年份**: 2007年 - **出版社**: No Starch Press, Inc. - **ISBN-10**: 1-...

    Computer Security: Principles and Practice

    First Edition by William Stallings and Lawrie Brown Lecture slides by Lawrie Brown

    Operating Systems: Principles and Practice

    《Operating Systems: Principles and Practice》是一本被美国伯克利大学、卡内基梅隆大学等顶尖学府广泛采用的教材,对于学习和理解操作系统的基本原理与实践应用具有很高的参考价值。 #### 二、操作系统的核心...

    Forecasting: Principles & Practice

    Rob J Hyndman and George Athanasopoulos Monash University, Australia 预测:原理与实践, 时间序列分析入门教材 浏览器版本: https://otexts.com/fpp2/

    Operating Systems Principles and Practice(2nd)

    - **Thomas Anderson**:华盛顿大学教授,在计算机科学领域有着丰富的研究和教学经验。 - **Mike Dahlin**:得克萨斯大学教授,并在谷歌公司任职,专注于操作系统及分布式系统的研究。 #### 三、版权信息 本书由...

    Cloud Computing: Theory and Practice

    Marinescu所著,是云计算领域的一本重要著作,它详细地阐述了云计算的理论基础、实践应用以及在不同行业的部署和应用。本书由Morgan Kaufmann出版社出版,在2013年6月7日发行了第一版,并使用英语作为出版语言,...

    Computer Graphics: Principles and Practice Third Edition

    《计算机图形学:原理与实践》第三版是一本全面介绍计算机图形学领域理论基础与应用技术的经典著作。本书由多位业内专家共同编写,包括John F. Hughes、Andries van Dam、Morgan McGuire等人,他们都是该领域的知名...

    Computer Network Security: Theory and Practice PPT 中英

    Computer Network Security Theory Practice PPT 计算机网络安全的理论与实践 中文PPT和英文PPT

    3D User Interfaces: Theory and Practice, 2nd Edition

    《3D User Interfaces: Theory and Practice, 2nd Edition》是一本关于三维用户界面设计的经典理论书籍。本书由Joseph J. LaViola Jr., Ernst Kruijff, Ryan P. McMahan, Doug A. Bowman以及Ivan Poupyrev共同编著。...

    Programming: Principles and Practice Using C++

    Bjarne Stroustrup, "Programming: Principles and Practice Using C++"Addison-Wesley Professional | 2008 | ISBN: 0321543726 | 1272 pages | PDF | 129 MBAn Introduction to Programming by the Inventor of ...

    Reliability Engineering_ Theory and Practice-.pdf

    而文件中提到的Alessandro Birolini教授和他的著作《Reliability Engineering: Theory and Practice》(第七版),说明了可靠性工程领域的理论和实践知识是一个不断演进的学科,需要不断地学习和更新。对于可靠性工程...

    Kalman Filtering Theory and Practice Using MATLAB (2015, 4th).pdf

    world problems in practice as illustrative examples, and also covers the more practical aspects of implementation. The author Grewal teaches at Cal State Fullerton and also offers seminars and ...

    Kalman Filtering - Theory and Practice Using MATLAB 4th

    Kalman Filtering: Theory and Practice Using MATLAB, Fourth Edition is an ideal textbook in advanced undergraduate and beginning graduate courses in stochastic processes and Kalman filtering....

    Modern Cryptography : Theory and Practice

    第一章:一个简单的通信游戏 第二章:防守与攻击 第三章:概率论和信息论 第四章:计算复杂性 第五章:代数基础 第六章:数论 第七章:加密-对称技术 第八章:加密-非对称技术 ...第十章:数据完整性技术 ...

Global site tag (gtag.js) - Google Analytics