我一直在研究洋蔥建築幾天。我明白,依賴關係應該總是朝向中心,以及如何使用依賴注入來實現這一點。但我有幾個問題,我仍然無法弄清楚。如何在洋蔥建築上實現服務和存儲庫?
模型(或實體)可以引用存儲庫接口或服務接口嗎?
例如:一個
Order
實體具有通過Oder.DeliveryZip
屬性,它是不外鍵建立一個DeliveryCity
關係,但都是獨一無二的。要獲得市拉鍊,我必須調用ICityRepository.FindByZip(zip)
我在我的模型下面的代碼
class Order { . . . [Inject] public ICityRepository CityRepository { get; set; } private City _dCity; public City DeliveryCity { get { if (_dCity == null) _dCity = this.CityRepository.FindByZip(this.DeliveryZip); return _dCity; } } . . . }
什麼是上面的代碼的問題?它應該使用域名服務嗎?
域服務實現應該在覈心還是在基礎設施層定義?
它非常有意義!我在問自己「我怎麼會想念那個?」!謝謝! – svallory
這是一個錯誤。 DDD工廠不負責重組。重組是物體的中間生命,工廠只關心生命的開始。請參閱此答案:http://stackoverflow.com/a/10264669/625332 – Dmitry
我不同意。工廠用於創建對象的實例。它們可以處於對象生命週期的開始階段或用於重構。他們可能是兩個方法或兩個不同類的同一個類。無論哪種方式,我都同意在每種情況下工廠的行爲方式都有所不同。我通常將重組工廠作爲存儲庫的依賴關係,委託工廠創建並使用從數據存儲檢索的數據重新構建新實例。欲瞭解更多信息,請參閱埃文斯第145頁:「重建存儲的對象」 – SonOfPirate