ฉันเห็น DDD (การออกแบบการขับเคลื่อนด้วยโดเมน) ถูกใช้บ่อยๆในบทความ - ฉันได้อ่านรายการ Wikipedia เกี่ยวกับ DDD แต่ยังไม่สามารถเข้าใจได้ว่ามันคืออะไรจริง ๆ และฉันจะนำไปใช้ในการสร้างเว็บไซต์ของฉันได้อย่างไร
ฉันเห็น DDD (การออกแบบการขับเคลื่อนด้วยโดเมน) ถูกใช้บ่อยๆในบทความ - ฉันได้อ่านรายการ Wikipedia เกี่ยวกับ DDD แต่ยังไม่สามารถเข้าใจได้ว่ามันคืออะไรจริง ๆ และฉันจะนำไปใช้ในการสร้างเว็บไซต์ของฉันได้อย่างไร
คำตอบ:
ประการแรกหากคุณไม่ทราบว่าคุณต้องการมันก็เป็นไปได้ที่คุณไม่ต้องการมัน หากคุณไม่รู้จักปัญหาที่ DDD แก้ไปบางทีคุณอาจไม่มีปัญหาเหล่านั้น แม้แต่ผู้สนับสนุน DDD มักจะชี้ให้เห็นว่า DDD นั้นมีไว้สำหรับโครงการขนาดใหญ่ (> 6 เดือน) เท่านั้น
สมมติว่าคุณยังอ่านอยู่ ณ จุดนี้การรับ DDD ของฉันคือ:
DDD กำลังพยายามทำให้ซอฟต์แวร์ของคุณเป็นแบบจำลองของระบบหรือกระบวนการในโลกแห่งความเป็นจริง ในการใช้ DDD คุณต้องทำงานอย่างใกล้ชิดกับผู้เชี่ยวชาญด้านโดเมนที่สามารถอธิบายวิธีการทำงานของระบบโลกแห่งความจริง ตัวอย่างเช่นหากคุณกำลังพัฒนาระบบที่จัดการวางเดิมพันในการแข่งม้าผู้เชี่ยวชาญด้านโดเมนของคุณอาจเป็นเจ้ามือรับแทงที่มีประสบการณ์
ระหว่างตัวคุณเองกับผู้เชี่ยวชาญด้านโดเมนคุณจะสร้างภาษาที่แพร่หลาย (UL) ซึ่งโดยทั่วไปจะเป็นคำอธิบายเกี่ยวกับแนวคิดของระบบ แนวคิดคือคุณควรจะสามารถจดบันทึกสิ่งที่ระบบทำในลักษณะที่ผู้เชี่ยวชาญด้านโดเมนสามารถอ่านและตรวจสอบว่าถูกต้อง ในตัวอย่างการเดิมพันของเราภาษาที่แพร่หลายจะรวมคำจำกัดความของคำเช่น 'race', 'bet', 'odds' และอื่น ๆ
แนวคิดที่อธิบายโดย UL จะเป็นพื้นฐานของการออกแบบเชิงวัตถุของคุณ DDD ให้คำแนะนำที่ชัดเจนเกี่ยวกับวิธีการที่วัตถุของคุณควรโต้ตอบและช่วยให้คุณแบ่งวัตถุของคุณออกเป็นหมวดหมู่ต่อไปนี้:
DDD ยังแนะนำหลายรูปแบบ:
ตอนนี้ถึงตอนนี้ฉันต้องบอกว่าถ้าคุณไม่เคยได้ยินเรื่องเหล่านี้มาก่อนคุณไม่ควรพยายามใช้ DDD ในโครงการใด ๆ ที่คุณมีกำหนด ก่อนที่จะพยายาม DDD คุณควรจะคุ้นเคยกับรูปแบบการออกแบบและรูปแบบการออกแบบองค์กร การรู้สิ่งเหล่านี้ทำให้ DDD เข้าใจได้ง่ายขึ้นมาก และดังที่กล่าวไว้ข้างต้นมีการแนะนำ DDD ฟรีจาก InfoQ (ซึ่งคุณสามารถหาพูดคุยเกี่ยวกับ DDD ได้)
ใช้ StackOverflow เป็นตัวอย่าง แทนที่จะเริ่มออกแบบรูปแบบเว็บบางรูปแบบคุณต้องจดจ่อกับการสร้างแบบจำลองเชิงวัตถุของเอนทิตีภายในโดเมนปัญหาของคุณเช่นผู้ใช้คำถามคำตอบคะแนนความคิดเห็น ฯลฯ เนื่องจากการออกแบบนั้นขับเคลื่อนด้วยรายละเอียดของปัญหา โดเมนจะเรียกว่าการออกแบบโดเมนขับเคลื่อน