Câu trả lời:
Thứ nhất, nếu bạn không biết rằng bạn cần nó thì có thể là bạn không cần nó. Nếu bạn không nhận ra những vấn đề mà DDD giải quyết thì có lẽ bạn không gặp phải những vấn đề đó. Ngay cả những người ủng hộ DDD sẽ thường xuyên chỉ ra rằng DDD chỉ dành cho các dự án lớn (> 6 tháng).
Giả sử rằng bạn vẫn đang đọc vào thời điểm này, tôi nhận DDD là thế này:
DDD là về việc cố gắng biến phần mềm của bạn thành một mô hình của một hệ thống hoặc quy trình trong thế giới thực. Khi sử dụng DDD, bạn phải làm việc chặt chẽ với một chuyên gia tên miền , người có thể giải thích cách hệ thống trong thế giới thực hoạt động. Ví dụ: nếu bạn đang phát triển một hệ thống xử lý việc đặt cược vào các cuộc đua ngựa, chuyên gia tên miền của bạn có thể là một người cá cược có kinh nghiệm.
Giữa bản thân và chuyên gia tên miền, bạn xây dựng một ngôn ngữ có mặt khắp nơi (UL), về cơ bản là một mô tả khái niệm về hệ thống. Ý tưởng là bạn sẽ có thể viết ra những gì hệ thống làm theo cách mà chuyên gia tên miền có thể đọc nó và xác minh rằng nó là chính xác. Trong ví dụ cá cược của chúng tôi, ngôn ngữ phổ biến sẽ bao gồm định nghĩa của các từ như 'chủng tộc', 'đặt cược', 'tỷ lệ cược', v.v.
Các khái niệm được mô tả bởi UL sẽ tạo thành cơ sở cho thiết kế hướng đối tượng của bạn. DDD cung cấp một số hướng dẫn rõ ràng về cách các đối tượng của bạn sẽ tương tác và giúp bạn chia các đối tượng của mình thành các loại sau:
DDD cũng đề xuất một số mẫu:
Bây giờ, tại thời điểm này tôi phải nói rằng nếu bạn chưa từng nghe về bất kỳ điều nào trong số này trước đây, thì bạn không nên cố gắng sử dụng DDD cho bất kỳ dự án nào mà bạn có thời hạn. Trước khi thử DDD, bạn nên làm quen với các mẫu thiết kế và mẫu thiết kế doanh nghiệp . Biết những điều này làm cho DDD dễ dàng hơn rất nhiều để nắm bắt. Và, như đã đề cập ở trên, có một phần giới thiệu miễn phí về DDD có sẵn từ InfoQ (nơi bạn cũng có thể tìm thấy các cuộc nói chuyện về DDD).
Lấy StackOverflow làm ví dụ. Thay vì bắt đầu thiết kế một số biểu mẫu web, trước tiên bạn tập trung vào việc lập mô hình hướng đối tượng của các thực thể trong miền vấn đề của bạn, ví dụ: Người dùng, Câu hỏi, Câu trả lời, Phiếu bầu, Nhận xét, v.v. Vì thiết kế được điều khiển bởi các chi tiết của vấn đề tên miền được gọi là thiết kế hướng tên miền .
Bạn có thể đọc thêm trong cuốn sách của Eric Evans .