- 浏览: 118250 次
- 来自: ...
文章分类
最新评论
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 379那天被问道软件架构师需要了解编程语言的细节吗? 呵呵,架构是 ... -
Thinking Everyday
2004-12-11 12:01 4371,编程语言的发展趋势 ... -
糟糕命名集锦
2004-12-11 16:50 5681,公交支线,如375和375 ... -
古代的软件开发 (一)
2005-02-19 16:45 6741,额外的中间层鞋子:人类发明鞋子的意义无论如何评价都不过分, ... -
访问控制 : 语言和平台
2005-03-15 19:27 610程序逻辑上的组织方式(如名称空间,包等)可以和部署时的分发 ... -
Thinking Everyday II
2005-03-17 15:11 6181, 是业务,不是技术,傻瓜 是集成,不是编程 是使用,不 ... -
内容与标准为王:下一代互联网与下一代搜索
2005-07-25 14:53 702第一代互联网混淆了真正的数据和它的表现形式,第一代搜索无法 ... -
个性与定制为王:下一代互联网和下一代门户
2005-07-28 11:28 599看一下现在我与互联网有关的生活:我有两三个常用的Web邮箱 ... -
泛型编程 vs. 面向对象
2005-08-10 14:30 815面向对象:封装(数据抽象)是基础,继承是手段,多态是目的 ... -
函数式编程 vs. 对象式编程
2005-08-10 14:44 647<<我爱我家>>有一集和平摔成了脑 ... -
用手机从ATM取钱
2005-11-21 22:49 692手机的以下两个特性,使它潜在的可能成为统一的支付和信用平 ... -
Web 3.0 : Unified Human-like Interaction
2006-01-14 16:31 696你还在到搜索引擎的主页上去搜索吗?你还登录新闻网站查询最新比赛 ... -
软件生物学
2006-01-14 16:59 647长久以来,软件的建筑学隐喻已经深入人心,可始终无法达到建筑 ... -
广义对象论
2006-01-25 15:31 687前几天本想接着以前的思维中对“3.2 Programming ... -
Thinking Everyday III
2006-03-26 14:17 7871, RAII让我告别了delete,IoC让我告别了ne ... -
简单至及的AOP和IOC
2006-03-26 14:21 659I. AOP的例子 1, Google To ... -
TDD: Tricky Driven Development
2007-05-10 07:07 590命名 测试用例的名字应该描述需求, 不要描述实现. ... -
Thinking Everyday IV
2007-05-15 04:36 5191, 实际上 C# 2.0 已经部 ... -
迭代本质论
2008-02-14 13:58 627新年伊始, 可能你又要制定一些计划了, 实际上, 你的生活在开 ... -
建筑的永恒之道
2004-08-10 18:31 6482,质 这种特质是任 ...
相关推荐
《MDA Explained: The Practice and Promise of the Model Driven Architecture》是一本深入探讨模型驱动架构(Model Driven Architecture,简称MDA)及其应用的书籍。本书由Anneke Kleppe、Jos Warmer和Wim Bast三...
读书笔记:Thread Practice 实战Java高并发程序设计视频
Programming: Principles and Practice Using C++ 第二版 Bjarne Stroustrup epub版
它被广泛应用于导航、控制、信号处理以及经济学等多个领域。卡尔曼滤波的基本思想是基于动态系统的模型以及对系统状态的先验估计,来最小化估计误差的均方差。 #### 理论基础 1. **线性系统模型**: - 卡尔曼滤波...
### 《Code Craft: The Practice of Writing Excellent Code》核心知识点概览 #### 一、书籍基本信息 - **作者**: Pete Goodliffe - **出版年份**: 2007年 - **出版社**: No Starch Press, Inc. - **ISBN-10**: 1-...
First Edition by William Stallings and Lawrie Brown Lecture slides by Lawrie Brown
《Operating Systems: Principles and Practice》是一本被美国伯克利大学、卡内基梅隆大学等顶尖学府广泛采用的教材,对于学习和理解操作系统的基本原理与实践应用具有很高的参考价值。 #### 二、操作系统的核心...
Rob J Hyndman and George Athanasopoulos Monash University, Australia 预测:原理与实践, 时间序列分析入门教材 浏览器版本: https://otexts.com/fpp2/
Marinescu所著,是云计算领域的一本重要著作,它详细地阐述了云计算的理论基础、实践应用以及在不同行业的部署和应用。本书由Morgan Kaufmann出版社出版,在2013年6月7日发行了第一版,并使用英语作为出版语言,...
而文件中提到的Alessandro Birolini教授和他的著作《Reliability Engineering: Theory and Practice》(第七版),说明了可靠性工程领域的理论和实践知识是一个不断演进的学科,需要不断地学习和更新。对于可靠性工程...
- **Thomas Anderson**:华盛顿大学教授,在计算机科学领域有着丰富的研究和教学经验。 - **Mike Dahlin**:得克萨斯大学教授,并在谷歌公司任职,专注于操作系统及分布式系统的研究。 #### 三、版权信息 本书由...
Computer Network Security Theory Practice PPT 计算机网络安全的理论与实践 中文PPT和英文PPT
《3D User Interfaces: Theory and Practice, 2nd Edition》是一本关于三维用户界面设计的经典理论书籍。本书由Joseph J. LaViola Jr., Ernst Kruijff, Ryan P. McMahan, Doug A. Bowman以及Ivan Poupyrev共同编著。...
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 ...
《计算机图形学:原理与实践》第三版是一本全面介绍计算机图形学领域理论基础与应用技术的经典著作。本书由多位业内专家共同编写,包括John F. Hughes、Andries van Dam、Morgan McGuire等人,他们都是该领域的知名...
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....
第一章:一个简单的通信游戏 第二章:防守与攻击 第三章:概率论和信息论 第四章:计算复杂性 第五章:代数基础 第六章:数论 第七章:加密-对称技术 第八章:加密-非对称技术 ...第十章:数据完整性技术 ...
Forecasting is required in many situations. Deciding whether to build another power generation plant in the next five years requires forecasts of future demand. Scheduling staff in a call centre next ...