我提供的服务是从存储库获取域,并将其自身的实例传递给域以获取某些外部依赖关系。会变成反模式吗? 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));
想法?
$currencyVal
的逻辑应从OrderService
移入Order
。$externalServiceClient
,因此该客户端也将移至Order
。