Questions tagged «lazy-initialization»


6
实体方法调用上的DDD注入服务
问题的简短格式 在DDD和OOP的最佳实践中,是否可以在实体方法调用上注入服务? 长格式示例 假设我们在DDD中有一个经典的Order-LineItems案例,其中有一个称为Order的域实体,它也充当聚合根,并且该实体不仅由其Value Objects组成,而且还包含Line Item的集合实体。 假设我们希望在应用程序中使用流利的语法,以便我们可以做类似的事情(请注意第2行中的语法,在此称为getLineItems方法): $order = $orderService->getOrderByID($orderID); foreach($order->getLineItems($orderService) as $lineItem) { ... } 我们不想将任何LineItemRepository注入OrderEntity,因为这违反了我能想到的几个原则。但是,语法的流畅性是我们真正想要的,因为它易于阅读和维护以及测试。 考虑下面的代码,指出该方法getLineItems中OrderEntity: interface IOrderService { public function getOrderByID($orderID) : OrderEntity; public function getLineItems(OrderEntity $orderEntity) : LineItemCollection; } class OrderService implements IOrderService { private $orderRepository; private $lineItemRepository; public function __construct(IOrderRepository $orderRepository, ILineItemRepository $lineItemRepository) { $this->orderRepository …

4
有什么理由不能将延迟初始化内置到Java中吗?
由于我在服务器上使用的用户绝对没有非持久状态,因此我们在每个请求中都会推出我们拥有的每个与用户相关的对象。 因此,我经常发现自己对可能未使用的对象的属性进行了延迟初始化。 protected EventDispatcher dispatcher = new EventDispatcher(); 成为... protected EventDispatcher<EventMessage> dispatcher; public EventDispatcher<EventMessage> getEventDispatcher() { if (dispatcher == null) { dispatcher = new EventDispatcher<EventMessage>(); } return dispatcher; } 有什么理由无法将其内置到Java中吗? protected lazy EventDispatcher dispatcher = new EventDispatcher(); 就像下面的评论中提到的那样,我意识到一种语言在理论上可以发展为包含您想要的大多数内容。我正在寻找一种可能性的实用度量。这会与其他功能冲突吗?实现是否足够简单,可以很好地与JVM一起使用?甚至,这是个好主意吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.