大部分尝试使用领域模型的项目,好一点的只是在代码里多了一个 model 目录,倒没有付出什么成本。差一点的是把整个数据表重新定义了一个 xxxBO 的对象,然后每次都要多一次对象的字段拷贝。逻辑写来写去只看见增删改查,哪里有什么领域模型可言?
领域模型说穿了就是一个 AggregateRoot,就说要维护一个 model 的概念完整性(conceptual integrity)。比如一个账单上的账要是平的,某个条目上多了,另外一个条目就要少了。这些业务上的恒定规则(invariant)需要被封装到对象内部被保护起来,以免数据出现逻辑上的错乱(和并发无关)。有多少系统有复杂的业务规则需要这么封装的?其实很少。