Bạn nên đọc thêm về Thiết kế hướng tên miền . Về cơ bản, bạn cố gắng nắm bắt các yêu cầu của doanh nghiệp thành một mô hình thuần túy (trong hầu hết các mô hình đối tượng) có thể thực hiện tất cả các nhiệm vụ logic kinh doanh cần thiết. Mô hình này sau đó có thể được gọi từ một lớp ứng dụng (ví dụ: khung nhìn hoặc bộ điều khiển trong MVC, trong MVP bạn gọi nó và điều chỉnh nó cho GUI trong Trình dẫn). Mô hình cũng nên thờ ơ với sự kiên trì và những thứ kỹ thuật khác càng tốt.
Đóng gói logic kinh doanh trong một mô hình miền như vậy có một số lợi thế lớn:
- Tái sử dụng
- Dễ sử dụng và mở rộng
- Nói chung dẫn đến một kiến trúc tốt hơn
- Nó rõ ràng truyền đạt sự gắn kết và các yêu cầu kinh doanh ...
- ... và do đó cải thiện giao tiếp giữa các nhà phát triển, khách hàng, nhà phân tích, v.v.
Tôi giới thiệu cuốn sách của Eric Evan về Thiết kế hướng miền để đọc thêm, vì nó sẽ chỉ cho bạn đi đúng hướng và cung cấp cho bạn một số ví dụ hay về nơi đặt logic nào. Tôi cá rằng vào thời điểm bạn đọc nó, một tỷ lệ lớn các thực thể của bạn sẽ chứa nhiều hơn dữ liệu phẳng .
Nhưng tôi thấy thật khó để lên kế hoạch cho một cách tiếp cận trong đó Mô hình xử lý logic nghiệp vụ và là các lớp hoàn chỉnh trong chính chúng.
Tôi giả sử, theo mô hình mà bạn chủ yếu đề cập đến các thực thể trong bối cảnh này. Đưa logic / hành vi kinh doanh vào các thực thể không phải là một nhiệm vụ tầm thường. Nhưng bạn nên luôn luôn suy nghĩ về những gì một thực thể là và những gì một tổ chức thực hiện . Liệu nó có một số trách nhiệm hoặc hành vi? Đôi khi bạn có thể có các thực thể phẳng nếu các hành vi hoặc trách nhiệm được thể hiện tốt hơn dưới dạng dịch vụ.
Giả sử bạn có một con vật. Mặc dù các thuộc tính của nó có thể được lưu thẳng vào cơ sở dữ liệu, nhưng nó cũng có một số hành vi. Nó cần ăn. Nhưng một động vật ăn cỏ sẽ không ăn thịt, vì vậy bạn phải chắc chắn rằng nó sẽ thể hiện hành vi của nó khi lập trình viên muốn nó ăn thịt bằng vũ lực. Nó có thể di chuyển và nó có thể tạo ra tiếng ồn độc đáo. Đây là một số điều nên được mô hình hóa thành thực thể chẳng hạn. Bạn chắc chắn sẽ không dựa vào các dịch vụ thủ tục để làm cho những con vật đó ăn, di chuyển hoặc gây tiếng ồn.
Nhưng tất cả các ví dụ là nông mà không có một lĩnh vực kinh doanh cụ thể. Vì vậy, hãy suy nghĩ về lĩnh vực kinh doanh của bạn và về các thực thể, hành vi và trách nhiệm của nó. Một miền kinh doanh khác có thể chứa các thực thể trông giống với người ngoài, nhưng thực sự là một cái gì đó hoàn toàn khác hoặc thể hiện một hành vi hoàn toàn khác. Mô hình cần mô tả đầu tiên và trước hết mô tả miền của người dùng chính xác nhất có thể.