- 浏览: 112509 次
- 来自: ...
文章分类
最新评论
DDD的关键问题是如何识别缺失的领域概念. Eric的书里提供了一些方法, 比如倾听表达用语, 检查不协调之处, 研究矛盾之处等等. 我们需要更多的实践来捕捉缺失的概念.
新实践: 检查更换编程框架对代码带来的影响.
这个实践基于以下的理念: 业务逻辑没有发生变化则领域模型也不应该变化. 因此如果更换编程框架造成了大量业务代码的变动, 则意味着有概念没有被封装在领域层.
这里并非鼓吹要应用程序可以支持动态的切换编程框架, 比如从一种ORM工具切到另一种, 或者从一种MVC框架切到另一种. 这里强调的是领域模型及领域概念应该独立于编程框架来表达, 虽然最终模型需要通过某种关联或适配被框架来调用.
举个例子. 公司在为客户提供不同的服务之前, 需要按照法律跟客户签署一系列的协议. 这可以是一个 legal compliance 的 sub domain. 如果客户没有签署协议, 则系统拒绝提供进一步的服务. 如果系统是一个网站, 则检查客户的协议签署情况以判断是继续提供服务还是拒绝的逻辑可以放在Filter中(几乎所有web编程框架都提供了基于管道和过滤器的架构). 但如果这样的话, 当我们更换web框架时需要把这部分逻辑挪到新框架下的filter中. 因此更好的做法是把这部分逻辑挪进领域模型, 可以建模成规则, 来表达每一条需要遵守的法律约束, 最终可以用领域层的管道和过滤器连接起来.
我们不必真的更换编程框架, 只需假象一下. 之前有类似的实践, 是假想需要为系统提供不同的UI, 比如一个Web UI和一个命令行UI, 来促使业务逻辑不要和UI代码耦合在一起. 实践是类似的, 角度不同.
新实践: 关注对基础类型的操作.
频繁操作基础类型, 尤其在不同的场合以同样的方式来操作基础类型, 通常意味着领域概念的缺失. 比如字符串类型. 如果你发现经常需要取字符串的某一段或者定位某个特定子串, 则很可能是把领域概念编码在作为实现的字符串身上了. 事实上, 除了在输入输出或者Context的边界交换数据时, 不应该有任何字符串的操作.
另一个例子跟我司面试题有关, 计算金额时的舍入. 如果舍入是某种会计规则所明确要求的, 则应该对其显式建模, 而不是直接在计算时用些round()函数来隐式的表达.
Working on more practice...
发表评论
-
Architecture is layered
2004-12-11 11:57 348那天被问道软件架构师需要了解编程语言的细节吗? 呵呵,架构是 ... -
Thinking Everyday
2004-12-11 12:01 3981,编程语言的发展趋势 ... -
糟糕命名集锦
2004-12-11 16:50 5471,公交支线,如375和375 ... -
古代的软件开发 (一)
2005-02-19 16:45 6521,额外的中间层鞋子:人类发明鞋子的意义无论如何评价都不过分, ... -
访问控制 : 语言和平台
2005-03-15 19:27 584程序逻辑上的组织方式(如名称空间,包等)可以和部署时的分发 ... -
Thinking Everyday II
2005-03-17 15:11 5961, 是业务,不是技术,傻瓜 是集成,不是编程 是使用,不 ... -
内容与标准为王:下一代互联网与下一代搜索
2005-07-25 14:53 624第一代互联网混淆了真正的数据和它的表现形式,第一代搜索无法 ... -
个性与定制为王:下一代互联网和下一代门户
2005-07-28 11:28 552看一下现在我与互联网有关的生活:我有两三个常用的Web邮箱 ... -
泛型编程 vs. 面向对象
2005-08-10 14:30 767面向对象:封装(数据抽象)是基础,继承是手段,多态是目的 ... -
函数式编程 vs. 对象式编程
2005-08-10 14:44 618<<我爱我家>>有一集和平摔成了脑 ... -
用手机从ATM取钱
2005-11-21 22:49 671手机的以下两个特性,使它潜在的可能成为统一的支付和信用平 ... -
Web 3.0 : Unified Human-like Interaction
2006-01-14 16:31 669你还在到搜索引擎的主页上去搜索吗?你还登录新闻网站查询最新比赛 ... -
软件生物学
2006-01-14 16:59 619长久以来,软件的建筑学隐喻已经深入人心,可始终无法达到建筑 ... -
广义对象论
2006-01-25 15:31 653前几天本想接着以前的思维中对“3.2 Programming ... -
Thinking Everyday III
2006-03-26 14:17 7541, RAII让我告别了delete,IoC让我告别了ne ... -
简单至及的AOP和IOC
2006-03-26 14:21 616I. AOP的例子 1, Google To ... -
TDD: Tricky Driven Development
2007-05-10 07:07 560命名 测试用例的名字应该描述需求, 不要描述实现. ... -
Thinking Everyday IV
2007-05-15 04:36 4931, 实际上 C# 2.0 已经部 ... -
迭代本质论
2008-02-14 13:58 591新年伊始, 可能你又要制定一些计划了, 实际上, 你的生活在开 ... -
建筑的永恒之道
2004-08-10 18:31 6172,质 这种特质是任 ...
相关推荐
MDA Explained: The Practice and Promise of the Model Driven Architecture
Programming: Principles and Practice Using C++ 第二版 Bjarne Stroustrup epub版
Code Craft: The Practice of Writing Excellent Code 英文原版,带书签,清晰可复制
Cloud Computing: Theory and Practice provides students and IT professionals with an in-depth analysis of the cloud from the ground up. Beginning with a discussion of parallel computing and ...
First Edition by William Stallings and Lawrie Brown Lecture slides by Lawrie Brown
Business analysis For Practitioners Practice Guide
卡尔曼滤波理论与应用(Matlab版),非常经典,非常实用!
Computer Network Security Theory Practice PPT 计算机网络安全的理论与实践 中文PPT和英文PPT
This book presents modern JavaScript best practice, utilizing the features now available in the language that enable you to write more powerful code that is clean, performant, maintainable, and ...
3D UI 经典理论书籍 最新版 3D User Interfaces: Theory and Practice, 2nd Edition
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 ...
国外多所大学最新采用教材,比mos更适合教学与自学
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....
第一章:一个简单的通信游戏 第二章:防守与攻击 第三章:概率论和信息论 第四章:计算复杂性 第五章:代数基础 第六章:数论 第七章:加密-对称技术 第八章:加密-非对称技术 ...第十章:数据完整性技术 ...
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 ...
美国伯克利,卡内基梅隆等高校都在用这本教材,很值得参考。
Rob J Hyndman and George Athanasopoulos Monash University, Australia 预测:原理与实践, 时间序列分析入门教材 浏览器版本: https://otexts.com/fpp2/
Graphics Shaders: Theory and Practice is intended for a second course in computer graphics at the undergraduate or graduate level, introducing shader programming in general, but focusing on the GLSL ...
Wireless Positioning:Principles and Practice 2019 Wireless Positioning:Principles and Practice 2019.zip (11.41 MB, 下载次数: 478 ) 收藏收
英国帝国理工,D J Ewins 教授关于模态测试的经典之作。前两章讲模态理论,接着讲数据采集,模态参数估计。振动专业学生必读。