Nó phụ thuộc vào loại kiến trúc bạn muốn.
- Trong Thiết kế hướng tên miền, bạn sẽ tạo Mô hình miền có cả dữ liệu và chức năng.
Điều này có nghĩa là Ordermột tài sản (hoặc phương thức) sẽ trả lại tổng giá của đơn hàng dựa trên OrderLines. Họ Ordercũng sẽ có một phương pháp AddOrderItem(Product product, int amount)và Ordersẽ kiểm tra xem đã có một OrderLinesản phẩm cụ thể chưa.
Trong một mô hình như vậy, bạn cũng sẽ có các đối tượng không phải là các thực thể thực sự, như Repositoryđể truy cập dữ liệu hoặc Factoryđể tạo các thực thể. Chúng được gọi là Dịch vụ tên miền. Một lớp ứng dụng chịu trách nhiệm gọi các dịch vụ miền (ví dụ để lấy một thực thể từ cơ sở dữ liệu) và sau đó nó sẽ thực thi chức năng trên thực thể. Các Application Layernên càng mỏng càng tốt.
Đây là một bài viết hay về DDD giải thích các khái niệm này chi tiết hơn.
- Bạn cũng có thể sử dụng Mô hình miền thiếu máu . Điều đó có nghĩa là các thực thể của bạn bao gồm các thuộc tính get / set và không chứa hành vi. Trong thiết kế như vậy, Lớp nghiệp vụ của bạn sẽ chứa hành vi, chẳng hạn như tính
Ordergiá và kiểm tra trùng lặp OrderLines.
Có nhiều ý kiến khác nhau cho dù Mô hình miền thiếu máu là một điều xấu. Cá nhân tôi thích một mô hình miền thực sự.
Bài viết này mô tả sự khác biệt giữa Mô hình miền thiếu máu và không thiếu máu.