1
假設在倉庫中沒有使用ORM(例如Doctrine),我的問題是實例化聚合對象的正確方法是什麼?是直接在存儲庫中實例化子對象,並通過其設置者將其分配給聚合根,或者聚合根負責構造其子實體/對象?正確重構存儲庫中的聚合對象?
實施例1:
class UserRepository
{
// Create user domain entity.
$user = new User();
$user->setName('Juan');
// Create child object orders entity.
$orders = new Orders($orders);
$user->setOrders($orders);
}
實施例2:
class UserRepository
{
// Create user domain entity.
$user = new User();
$user->setName('Juan');
// Get orders.
$orders = $ordersDao->findByUser(1);
$user->setOrders($orders);
}
而實施例2中,訂單實例化的照顧該用戶實體的內部。
我不太確定(不完全理解問題),但最後的評論說「訂單在用戶實體內部得到了關注」 - 我認爲你不想這樣做。實體不希望自己安頓下來。如果您必須從實體中委託這種責任類型,則應將其代理給域服務。 – 2011-02-11 02:09:22