ขึ้นอยู่กับประเภทของสถาปัตยกรรมที่คุณต้องการ
- ในการออกแบบโดเมนขับเคลื่อนคุณจะสร้างรูปแบบโดเมนที่จะมีทั้งข้อมูลและฟังก์ชันการทำงาน
นี้จะหมายถึงว่าOrderมีคุณสมบัติ (หรือวิธีการ) OrderLinesที่จะกลับราคารวมของการสั่งซื้อขึ้นอยู่กับ Orderก็จะมีวิธีการAddOrderItem(Product product, int amount)และOrderจะตรวจสอบว่ามีอยู่แล้วOrderLineสำหรับผลิตภัณฑ์เฉพาะที่
ในรูปแบบดังกล่าวคุณจะมีวัตถุที่ไม่ใช่เอนทิตีจริงเช่นRepositoryสำหรับการเข้าถึงข้อมูลหรือFactoryสำหรับการสร้างเอนทิตี เหล่านี้เรียกว่าบริการโดเมน Application Layer มีหน้าที่เรียก Domain Services (ตัวอย่างเช่นการดึงเอนทิตีจากฐานข้อมูล) จากนั้นจะทำการใช้งานฟังก์ชันในเอนทิตี Application Layerควรจะเป็นบางที่สุดเท่าที่ทำได้
นี่เป็นบทความที่ดีเกี่ยวกับ DDDซึ่งอธิบายแนวคิดเหล่านี้อย่างละเอียดยิ่งขึ้น
- นอกจากนี้คุณยังสามารถใช้โดเมนรุ่นโลหิตจาง นั่นหมายความว่าเอนทิตีของคุณประกอบด้วยคุณสมบัติรับ / ตั้งค่าและไม่มีลักษณะการทำงาน ในการออกแบบเช่นชั้นธุรกิจของคุณจะมีพฤติกรรมเช่นการคำนวณราคาและตรวจสอบซ้ำ
OrderOrderLines
มีความคิดเห็นที่แตกต่างกันไม่ว่าจะเป็น Anemic Domain Model เป็นสิ่งที่ไม่ดี ส่วนตัวฉันชอบรูปแบบโดเมนจริง
บทความนี้อธิบายความแตกต่างระหว่างแบบจำลองโดเมน Anemic และแบบที่ไม่ใช่ Anemic