'所以正是在这种情况下,我们创建了一个Order.adjust()
方法,将调用委托给OrderAdjust Service
. 有Order.adjust()
一个优势,它使Order
自己的调整操作。
这是怎么做到的?是否注入了域服务?
$order = new Order();
$order->adjust(???);
域服务在无状态的情况下如何对域实体进行操作?如果将域服务注入实体,则只能在引用上调用方法,因此必须存在状态?
$service = DomainService();
$entity = DomainEntity();
$entity->operation($service);
// Inside DomainEntity
public function operation(DomainService &$service)
{
// Operations are delegated to the domain service reference
$service->operation();
$service->operation2();
}
$another_entity = AnotherDomainEntity();
// What happened in the first object must be known here
// otherwise what's the point?
$another_entity->operation($service);
不应该像这样或在应用程序服务中完成吗?
$domain_service = new DomainService();
$entity = new DomainEntity();
$another_entity = new AnotherDomainEntity();
$domain_service->performOperation($entity, $another_entity);
域实体/对象之间的操作是如何完成的?域对象通常如何通信?它们在哪里实例化?
代码示例将不胜感激。
来源: http ://stochastyk.blogspot.no/2008/05/domain-services-in-domain-driven-design.html