У меня есть служба, которая получает домен из репозитория и передает свой экземпляр в домен для некоторой внешней зависимости. Может ли это стать анти паттерном? RichDomainModel
предлагает передать зависимость в домен по мере необходимости, однако меня беспокоит, можно ли это назвать циклической c зависимостью и станет ли она анти-паттерном?
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));
Мысли?