Chào anh chị, em đang băn khoăn Use Case trong Clean Architecture và khái niệm Use Case trong Biểu đồ UML là khác nhau hay tương đồng ?
Theo tập kí hiệu của Use Case Diagram thì các use case có liên hệ với nhau thông qua extends, generalization hoặc include, có thể tổng quát hóa cũng như cụ thể hóa. Còn use case trong Clean Architecture chỉ là mô tả một tác vụ cụ thể, không phân tách hay trừu tượng được, không có sự liên hệ với use case khác.
Nếu đưa khái niệm use case của biểu đồ use case diagram vào trong Clean Architecture, thì kiến trúc này sẽ bị phá vỡ và chúng ta cần 1 kiến trúc khác để mapping đúng với khái niệm.
Vì khi này các entity có thể phụ thuộc vào các abstract use case (áp dụng dependency inversion để module cấp cao không phụ thuộc vào module cấp thấp), thế nhưng theo khái niệm abstract use case cũng là use case do tính trừu tượng sẵn có của khái niệm use case là biểu thị sự tương tác chứ không mô tả rõ ràng về sequence hay activity, … như các loại diagram khác. Nghĩa là khi này, tầng domain phụ thuộc vào entities thế nhưng entities cũng ngược lại phụ thuộc vào domain => mâu thuẫn
Kết luận:
Như vậy 2 khái niệm use case này khác nhau, sẽ tốt hơn không nếu tác giả Robert C. Martin sử dụng 1 thuật ngữ khác thay vì use case để tránh hiểu lầm ?
Nếu 2 khái niệm use case này giống nhau, thì kiến trúc Clean Architecture là không tốt vì nó tự mâu thuẫn.
Xin cảm ơn anh chị và mong được góp ý, chỉ lỗi sai
Trân trọng