Hãy chắc chắn rằng bạn xem lại những nhận xét gần đây của Bác Bob về vai trò của thiết kế trong TDD .
Thiết kế hướng tên miền bao gồm rất nhiều mẫu kỹ thuật, xác định các lớp được thiết lập tốt như lớp Ứng dụng, Lớp cơ sở hạ tầng, Lớp Miền, Lớp bền vững.
Udi Dahan: "Chúa ơi, làm thế nào tôi ghét layering." Anh ấy dành thời gian để thảo luận về nó trong bài nói chuyện về CQRS của mình - nhưng Khác nhau (bắt đầu từ 18m30s)
Tôi sẽ đánh vần câu của bạn hơi khác nhau; "DDD nhận ra rằng có một số mối quan tâm chung cho hầu hết các ứng dụng kinh doanh và các giải pháp cho những mối quan tâm đó có tuổi thọ khác nhau" .
Ví dụ, mối quan tâm về tên miền, như một quy tắc, cần phải linh hoạt - đặc biệt là khi bạn đang tùy chỉnh một giải pháp cho một doanh nghiệp cụ thể. Xét cho cùng, tên miền liên quan đến cách công ty kinh doanh, nghĩa là, cách công ty kiếm tiền và có thể cung cấp các cải tiến kinh doanh nhanh chóng là doanh thu miễn phí.
Mặt khác, có lẽ bạn không cần phải thay đổi thành phần kiên trì thường xuyên. Các giải pháp cơ sở dữ liệu làm việc phát hành cuối cùng có thể cũng sẽ làm việc phát hành này.
Các mối quan tâm ứng dụng là một nơi nào đó ở giữa; chúng có xu hướng ổn định để người dùng không cần phải tìm hiểu một ứng dụng mới với mỗi bản phát hành.
Ngoài ra, có thể có nhiều triển khai để giải quyết bất kỳ mối quan tâm nhất định. Chẳng hạn, ứng dụng có thể chỉ cần một ảnh chụp nhanh về trạng thái hiện tại của nó - chỉ cần lưu tệp vào đĩa là đủ. Và trong vài lần lặp đầu tiên của bạn, đó cũng có thể là tất cả các tên miền cần. Nhưng cuối cùng cũng xuất hiện một câu chuyện yêu cầu hỗ trợ truy vấn đặc biệt và bạn nhận ra rằng việc cấu hình cơ sở dữ liệu quan hệ sẽ dễ dàng hơn rất nhiều so với thực hiện từ đầu. Và sau đó có một tính năng này sẽ hoạt động tốt hơn trong cơ sở dữ liệu đồ thị.
Trong khi đó, CTO muốn có một phiên bản ứng dụng chạy trên điện thoại của mình; Giám đốc điều hành vừa nghe từ một anh chàng rằng xuất bản API là điều quan trọng.
Ngoài ra, nhóm bán hàng sử dụng một mô hình khác, vì vậy hãy cung cấp cho chúng tôi cùng một ứng dụng, với một mô hình khác. Ồ, nhưng chúng tôi đang đi du lịch rất nhiều, vì vậy phiên bản của chúng tôi cần hoạt động khi chúng tôi ngoại tuyến và đồng bộ hóa sau ...
Nói cách khác, bạn áp dụng các mẫu chiến thuật từ ddd không phải bằng cách triển khai các trình giữ chỗ trống và giả sử rằng chúng sẽ được điền vào sau, nhưng thay vào đó bằng cách nhận ra khi bạn băng qua luồng "Này, đó là mã kiên trì trong mô hình miền của tôi, tôi không được thực hiện tái cấu trúc chưa. "