【发布时间】:2020-03-10 16:41:53
【问题描述】:
我有服务从存储库获取域并将其自己的实例传递给域以获得一些外部依赖。能不能变成反模式? RichDomainModel 建议根据需要将依赖传递给域,但是我担心这是否可以称为循环依赖并成为反模式?
class Order
{
private $currencyVal;
public function __construct()
{
}
public function processBusinessLogic($arg1, $arg2)
{
// do some business logic operation on $arg1, $arg2 & $this->currencyVal
}
public function populateExternalValue(OrderService $service)
{
$this->currencyVal = $service->getCurrencyValue($this);
}
}
OrderService
{
private $orderRepository;
private $externalServiceClient;
public function __construct(OrderRepository $orderRepository, Client $externalServiceClient)
{
$this->orderRepository = $orderRepository;
$this->externalServiceClient = $externalServiceClient;
}
public function processDomain(Request $request)
{
$order = $this->orderRepository->findById($request->orderId);
$order->populateExternalValue($this);
$order->processBusinessLogic($request->arg1, $request->arg2);
$this->orderRepository->save($order);
}
public function getCurrencyValue(Order $order)
{
return $this->externalServiceClient->getValue($order->currency)
}
}
或者我可以使用这样的东西,但这会导致AnemicDomainModel
$order->setCurrencyValue($this->getCurrencyValue($order));
想法?
【问题讨论】:
标签: design-patterns domain-driven-design anti-patterns