คำถามติดแท็ก lazy-initialization

6
เหตุใดจึงไม่ใช้การประเมินแบบขี้เกียจในทุกที่
ฉันเพิ่งเรียนรู้ว่าการประเมินผลแบบขี้เกียจทำงานได้อย่างไรและฉันสงสัยว่า: ทำไมจึงไม่ใช้การประเมินแบบขี้เกียจในทุกซอฟต์แวร์ที่ผลิตในปัจจุบัน ทำไมยังใช้การประเมินความกระตือรือร้น

6
DDD บริการฉีดในวิธีการนิติบุคคลที่เรียก
คำถามแบบสั้น มันอยู่ในแนวปฏิบัติที่ดีที่สุดของ DDD และ OOP ในการฉีดบริการกับการเรียกเมธอดเอนทิตีหรือไม่? ตัวอย่างรูปแบบยาว สมมติว่าเรามีกรณี Order-LineItems แบบคลาสสิกใน DDD ที่เรามี Domain Entity ชื่อ Order ซึ่งยังทำหน้าที่เป็น Aggregate Root และ Entity นั้นไม่เพียง แต่ประกอบไปด้วย Value Objects แต่ยังเป็นคอลเลกชันของรายการโฆษณา หน่วยงาน สมมติว่าเราต้องการไวยากรณ์ที่คล่องแคล่วในแอปพลิเคชันของเราเพื่อให้เราสามารถทำสิ่งนี้ (สังเกตไวยากรณ์ในบรรทัดที่ 2 ซึ่งเราเรียกgetLineItemsเมธอด) $order = $orderService->getOrderByID($orderID); foreach($order->getLineItems($orderService) as $lineItem) { ... } เราไม่ต้องการฉีด LineItemRepository ใด ๆ ลงใน OrderEntity เนื่องจากเป็นการละเมิดหลักการหลายอย่างที่ฉันสามารถนึกได้ แต่ความคล่องแคล่วของวากยสัมพันธ์เป็นสิ่งที่เราต้องการจริงๆเพราะมันง่ายต่อการอ่านและบำรุงรักษารวมถึงการทดสอบ พิจารณาโค้ดต่อไปนี้โดยสังเกตวิธีgetLineItemsในOrderEntity: interface …

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 หรือไม่ และเป็นความคิดที่ดีหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.