9.2 如何为那些不太明显的概念建模
面向对象范式会引导我们去寻找和创造特定类型的概念。所有事物(即使是像“应计费用”这种非常抽象的概念)及操作行为是大部分对象模型的主要部分。他们就是面向对象设计入门书籍所讲到的“名词和动词”。
9.2.1 显式的约束
约束是模型概念中非常重要的类型,它们通常是隐含的,将他们现实的表现出来可以极大的提高代码质量。
如果约束的存在掩盖了对象的基本职责,或者如果约束在领域中非常突出但在模型中却不明显,那么就可以将其提取到一个显式的对象中,甚至可以把它建模为一个对象和关系的集合。
下面是一些警告信号,表明约束的存在正在扰乱其“宿主对象”(HostObject)的设计。
(1) 计算约束所需的数据从定义上看并不属于这个对象。
(2) 相关规则在多个对象中出现,造成了代码重复或导致不属于同一族的对象之间产生了继承关系。
(3) 很多设计和需求讨论是围绕这些约束进行的,而在代码实现中,它们却隐藏在过程代码中。
9.2.2 将过程建模为领域对象
过程是应该被显式表达出来,还是应该被隐藏起来呢?区分的方法很简单:它是经常被领域专家提起呢,还是仅仅被当作计算机程序机制的一部分?约束和过程是两大类模型概念,当我们用面向对象语言编程时,不会立即想到

本文探讨了在面向对象设计中如何将隐含的约束和过程建模为显式概念,强调了约束在提高代码质量中的重要性。通过Specification模式,可以将对象的状态约束分离出来,用于验证对象、筛选集合和指定创建新对象的需求。文中列举了何时考虑将约束提取到显式对象中的警告信号,并指出业务规则不应混淆领域对象的职责。
最低0.47元/天 解锁文章
400

被折叠的 条评论
为什么被折叠?



