在创建领域模型时,对于实体的属性需要在领域模型中进行合法性验证,这样才能够保证合法性。那么验证放在哪里比较合适呢?
最直接的办法是将验证放在set函数中,比如下面的js代码:
1 | setAge(age){ |
领域模型需要与使用场景无关,我们假设这样一个场景,当用户在界面编辑一个实体的数据,需要在编辑过程中进行保存,这时,实体中的各个属性可能不合法,但仍然需要能够保存,如果在set属性中增加验证,用户如果需要保存实体,就必须让各个属性都通过验证,这样会打断思考过程。当然,我们可以创建一个草稿实体,但这同样带来新的问题。更好一点的办法是将赋值和验证分开:
1 | setAge(age){ |
还可以为整个实体编写一个validate函数,在这个函数中进行所有属性以及属性之间的验证,在使用实体进行其他工作之前,需要调用这个函数以确保实体的正确性。