Tôi đã đọc về Thiết kế hướng miền trong gần hai năm và đã thận trọng giới thiệu một số khái niệm trong công việc hàng ngày của tôi hoặc ít nhất là lập kế hoạch cho những việc tôi làm thường xuyên có thể được thực hiện trong Thiết kế hướng miền.
Một kết luận mà tôi bắt đầu đi đến đặc biệt là phản ứng với việc đọc thêm về Phân chia trách nhiệm truy vấn lệnh và truy vấn lệnh (CQRS) rằng có lẽ các đối tượng miền chỉ được sử dụng cho mục đích ghi. Nói rõ hơn, dường như những gì mọi người gợi ý một cách tinh tế trong phần lớn tài liệu tôi đã đọc rằng các đối tượng miền chịu trách nhiệm thực hiện các hoạt động / tính toán tập trung vào miền, sau đó chủ yếu cung cấp một con đường để kiên trì thông qua cơ sở hạ tầng được cung cấp trong một triển khai Kho lưu trữ. Mặc dù tôi thích thực tế rằng điều này có thể đơn giản hóa rất nhiều mô hình miền vì nó cắt giảm trách nhiệm phơi bày trạng thái.
Nếu thực sự đúng là các đối tượng miền chủ yếu được sử dụng làm đối tượng chỉ ghi thì điều đó đặt ra một số câu hỏi cho tôi mà tôi hy vọng ai đó có thể trả lời.
- Làm thế nào để một người thực hiện kiểm tra đơn vị trên một đối tượng có setters hoặc phương thức sửa đổi trạng thái của đối tượng nhưng không cung cấp giao diện công khai ra bên ngoài để đọc trạng thái từ như các thuộc tính trong C #? Có thể phơi bày trạng thái chỉ với mục đích làm cho đối tượng đó có thể kiểm tra được không?
- Làm thế nào để hiển thị cho người dùng kết quả tính toán hoặc thao tác được thực hiện trong miền mà không phải duy trì chúng và sau đó kéo kết quả từ lưu trữ liên tục bên ngoài ngữ cảnh của miền? Có ổn không khi để lộ trạng thái chỉ với mục đích hiển thị kết quả.
Là quy tắc của ngón tay cái mà các getters tài sản duy nhất (có được người truy cập) nên là những người cũng có thể ghi trong miền? Hoặc nói khác nhau nên các thuộc tính chỉ đọc là điều duy nhất cần tránh vì chúng chỉ ở đó cho mục đích đọc và do đó không đóng vai trò cần thiết trong mô hình miền thực tế?
Tài liệu liên quan: