我正在建立一個新的系統,我想爲它有一個豐富的領域。但是,我陷入了一些我想了解更多細節的細節。域驅動設計 - 我們應該在哪裏放置存儲庫?
假設我會有一個客戶類,您究竟在哪裏堅持客戶實體或聚合根?
它應該是具有持久性知識的客戶類嗎?
var myCustomer = CustomerFactory.CreateCustomer(id);
myCustomer.Name = ...
myCustomer.LastName = ...
myCustomer.Save()
在這種情況下,我需要將我的客戶存儲庫傳遞給客戶類(通過工廠或注入)。請注意,我無法在Eric Evens的DDD書中找到一個很好的例子。
另一種方式是保持客戶自由知道關於持久性的
var myCustomer = CustomerFactory.CreateCustomer(id);
myCustomer.Name = ...
myCustomer.LastName = ...
CustomerRepository repository = new CustomerRepository();
repository.Save(myCustomer);
此外,我想我可以有一個服務類,所有這一切在一起,就像這樣:
AddCustomerService service = new AddCustomerService(CustomerRepository repository)
service.AddCustomer(myCustomer);
只是一個小紙條: 如果我實際上沒有保存在客戶類中,我發現我的客戶類只不過是屬性,可能只有一點驗證,但沒有其他。沒有真正的行爲。行爲被移動到服務類或客戶端使用的存儲庫...
是的。我知道。但是你的域對象是否有對你的倉庫的引用? – user80855
不,沒有對我的域對象項目中的存儲庫的引用。 – Greg
謝謝。我認爲這是一條路。 – user80855