có thể sử dụng IoC và Rich Domain không? Có bất kỳ ví dụ tốt, dự án nguồn mở nào làm được điều đó không?
Tôi giả sử bạn có nghĩa là DI thay vì IoC và dự án bạn đã làm việc sử dụng container DI như Spring. IoC có hai hương vị chính: mẫu DI và Locator. Tôi không thấy lý do tại sao mô hình Định vị phải là một vấn đề, vì vậy hãy tập trung vào DI.
Tôi không nghĩ rằng nó có thể, hoặc ít nhất sẽ rất không chính xác. Khía cạnh chính của các thùng chứa DI là chúng kiểm soát việc tạo ra các đối tượng khi chúng tiêm chúng vào các vật thể khác ("các đối tượng được quản lý"). Tập hợp các đối tượng được quản lý còn sống khi các dự án chạy độc lập với các mục miền tồn tại trong dự án của bạn nhưng phụ thuộc vào cách các đối tượng được nối dây và phạm vi nào (singleton, nguyên mẫu) được gán cho chúng.
Đây là lý do tại sao bạn không muốn để bộ chứa DI quản lý các đối tượng miền của mình. Nhưng nếu bạn tạo các đối tượng theo cách thủ công (với mới), bạn không thể đưa các đối tượng khác vào đối tượng miền của mình. . Do đó, bạn sẽ không muốn đặt chức năng vào các đối tượng miền hoặc bạn sẽ mất các tính năng của DI.
Tôi không thấy làm thế nào một container DI giả định có thể hoạt động mà không quản lý các đối tượng của bạn và không có triển khai nào hiện có cho phép điều đó. Vì vậy, thật công bằng khi tuyên bố rằng DI dựa vào việc quản lý các đối tượng. Do đó, nó sẽ luôn cám dỗ bạn chia các đối tượng Rich Domain tiềm năng thành một lớp thiếu máu và một hoặc một vài lớp tập lệnh giao dịch.