คำตอบ:
ก่อนอื่นฉันไม่คิดว่าบทความ Wikipedia ที่คุณอ้างถึงนั้นดีมากส่วนใหญ่เป็นเพราะมันอ้างถึงสิ่งต่าง ๆ ที่เป็นส่วนเสริมของ Domain Driven Design และไม่ได้สอนใครเกี่ยวกับการฝึกฝน
แต่ในฐานะที่เป็นคนที่ใช้ Domain Driven Design มาเป็นหัวใจ (ซึ่งโดยปกติจะเป็น DDD มากกว่า 3D สำหรับสิ่งที่คุ้มค่า) ฉันมักจะรู้สึกถึงพื้นฐานของ DDD ชัดเจนถ้าคุณอ่านบทแรกของ Eric หนังสือของอีแวนส์ แต่มันเป็นชุดของรูปแบบและวิธีปฏิบัติดังนั้นจึงไม่ใช่เรื่องง่ายที่จะสรุปโดยย่อ 3 ประโยคว่ามันคืออะไรและข้อดีคืออะไรโดยไม่ต้องลงรายละเอียด รายละเอียดใดที่สะท้อนกับบุคคลใดบุคคลหนึ่งอาจแตกต่างกันมากเช่นกัน เป็นไปได้ที่ 10 ปีที่แล้วฉันจะไม่เห็นจุดนี้เลย
DDD ไม่ใช่กระสุนเงิน เมื่อดำเนินการอย่างสมเหตุสมผลแล้วมันเกี่ยวกับการใช้วิธีการสร้างซอฟต์แวร์เหมือนช่างฝีมือและตระหนักถึงความจำเป็นในการลดแรงเสียดทานทางปัญญาระหว่างทีมพัฒนาและธุรกิจที่พวกเขากำลังสร้างซอฟต์แวร์สำหรับ หนึ่งในวิธีปฏิบัติที่สำคัญที่สุดคือการมีเลเยอร์ที่คำศัพท์โดเมนที่ใช้โดยทีมซอฟต์แวร์และทีมธุรกิจจะจับคู่อย่างใกล้ชิดที่สุด คุณสร้างเลเยอร์นี้ซ้ำ ๆ เมื่อคุณเข้าใจปัญหาทางธุรกิจที่คุณพยายามแก้ไข เมื่อตรรกะทางธุรกิจถูกเข้ารหัสอย่างสมเหตุสมผลในเลเยอร์นี้แยกได้จากการอ้างอิงที่ซับซ้อนทั้งหมดที่แอปพลิเคชันองค์กรมักจะมีโดยการติดต่อกับระบบเหล่านั้นออกไปยังส่วนต่อประสานภาษาที่ใช้ในชั้นโดเมนจริงในที่สุดจะค่อนข้างชัดเจนชัดเจนและอ่านได้
เมื่อพิจารณาถึงรูปร่างที่ฉันเห็นว่าซอฟต์แวร์ระดับองค์กรส่วนใหญ่ในทางปฏิบัติ DDD อาจฟังดูเหมือนกระสุนสีเงินเพราะซอฟต์แวร์องค์กรส่วนใหญ่มีข้อกังวลที่น่าสงสารจนแทบจะไม่สามารถทดสอบได้และทีมซอฟต์แวร์ก็กลัวการเปลี่ยนแปลงเพราะ พวกเขาไม่ทราบว่าผลข้างเคียงของการเปลี่ยนแปลงรหัสที่เห็นได้ชัดเจนอาจจะเป็นอย่างไรในขณะที่เลเยอร์โดเมนแบบแยกส่วนได้อย่างเหมาะสมจะสามารถทดสอบและตรวจสอบได้อย่างอิสระ แต่จริงๆแล้ว DDD ยอมรับว่าระบบนั้นไม่ค่อยมีอยู่อย่างโดดเดี่ยว DDD รวมถึงรูปแบบการเผชิญปัญหาสำหรับระบบเดิม (เลเยอร์ต่อต้านการทุจริตบริบทแวดล้อมเพื่อชื่อคู่)
หากคุณฝึกการออกแบบเชิงวัตถุรวมถึงวินัยในการแต่งงานและคุณฝึกฝนการทดสอบหน่วยอย่างเป็นธรรมและคุณปรับรหัสอย่างไร้ความปราณีและคุณทำงานกับผู้เชี่ยวชาญด้านโดเมนในขณะที่สร้างระบบของคุณโดยพื้นฐานแล้วคุณจะได้ผลลัพธ์ที่ โดยทั่วไปสิ่งที่ผู้สนับสนุนการออกแบบที่ขับเคลื่อนโดเมนกำลังพูดถึง
มีรูปแบบเฉพาะบางอย่างที่อธิบายไว้ในหนังสือของ Evans ซึ่งส่วนใหญ่นำไปใช้กับการพัฒนาซอฟต์แวร์ขององค์กรและบางอย่างที่เป็นหลักการสากลที่เป็นธรรม แต่โดยพื้นฐานแล้ว DDD เป็นแนวทางปฏิบัติในการพัฒนาซอฟต์แวร์ที่สามารถลดการสะสมของหนี้ทางเทคนิค และทำให้ลูกค้าของคุณมีความสุขมากขึ้นเพราะคุณสามารถพูดภาษาเดียวกันกับกันและกันและนำเสนอวิธีแก้ไขปัญหาที่ดีกว่าเนื่องจากข้อดีของการทำความเข้าใจซึ่งกันและกันให้ดีขึ้น
คำอธิบายระดับสูงอาจเป็น -
ทำโมเดลคลาสของคุณเพื่อทำมิเรอร์โครงสร้างข้อมูลและพฤติกรรมของโดเมนปัญหาของคุณ
สิ่งนี้ช่วยให้คุณแมปการเปลี่ยนแปลงในโดเมนปัญหาของคุณโดยตรงกับการเปลี่ยนแปลงในรหัสของคุณดังนั้นควรอัปเดตได้ง่ายขึ้นเมื่อโดเมนปัญหาของคุณวิวัฒนาการ
การปฏิเสธความรับผิด: ฉันได้เพิ่มคำตอบนี้หลังจากคำถามถูกทำเครื่องหมายว่าซ้ำกัน ฉันไม่เห็นด้วย แต่ที่นี่เรา :-)
การออกแบบที่ขับเคลื่อนด้วยโดเมนมีวัตถุประสงค์เพื่อออกแบบซอฟต์แวร์ในโดเมนที่มีมูลค่าสูง / ซับซ้อนสูง
สิ่งนี้กลายเป็นแนวทางที่แตกต่างสำหรับการสร้างซอฟต์แวร์องค์กร: มีการเรียนรู้มากเกินไปและผลลัพธ์ที่สำคัญที่สุดคือคุณจะไม่ได้รับโซลูชั่นที่เหมาะสมตั้งแต่แรก
หรือการรวมกันของทั้งสอง
ทั้งสองวิธีคุณจะต้องมีพื้นฐานซอฟต์แวร์ที่ดีสำหรับซอฟต์แวร์ที่เขียนซ้ำบ่อยๆ นั่นเป็นสาเหตุที่หนังสือเล่มนี้เน้นที่ชุดของรูปแบบที่กำหนดรอบ ๆ รูปแบบโดเมน: เป็นชุดค่าผสมที่สมเหตุสมผลที่สุดในปี 2547
อย่างไรก็ตาม OOP และรูปแบบทางยุทธวิธีไม่ใช่สิ่งที่สำคัญที่สุด ความเชี่ยวชาญด้านเทคนิคเป็นสิ่งจำเป็นในการสร้างซอฟต์แวร์ที่ยอดเยี่ยมในทางวิวัฒนาการ แต่มันเป็นเพียงส่วนผสมเดียวของสูตร คนอื่น ๆ?