最近有一段时间,我听到有人支持这样一个事实,即域模型不应允许通过后续Save调用的属性更新域对象。但是,所有更新都应该通过显式方法完成。我如何理解所说的内容的例子:
错误代码(这对我来说似乎很正常):
var x = _repository.GetCustomerByID(5);
x.Firstname = "Travis";
x.Lastname = "Laborde";
_respository.SaveCustomer(x);
我认为这个人投球的守则看起来像:
var x = _repository.GetCustomerByID(5);
x.UpdateCustomerName("Travis", "Laborde");
_repository.SaveCustomer(x);
我想了解更多信息 - 这个模式是否有名称,以便我可以在Bing上使用它?
答案 0 :(得分:2)
我不知道这个模式有一个特定的名称,但根据你的描述,有一个基本的实际原因:
写x.Firstname = "Travis"
不会让x
对象知道Firstname
值已更改。这使得很难实现仅在更改的字段上使用SaveCustomer
的{{1}}函数。
当然,在一种支持将成员赋值视为函数调用的语言中(例如,C#与其属性一起使用),这种模式变得不那么有趣了。