Hỏi về cách thiết kế service

Chào mọi người
Mình có bài toán như sau:
Một sản phẩm được qua nhiều công đoạn, mỗi công đoạn công nhân thuộc công đoạn đó sẽ cập nhật trạng thái cho sản phẩm. Công nhân chỉ có thể update trạng thái cho sản phẩm nếu công đoạn trước đó đã hoàn thành.
Câu hỏi đặt ra là nên thiết kế service lấy sản phẩm như thế nào?

  1. Hàm của service sẽ nhận vào role của người dùng sau đó dùng if else để query trong db -> thay đổi lại phải sửa code, code sẽ dài toàn if else.
  2. Sẽ viết từng hàm riêng rẽ cho từng người dùng trong service -> interface của service sẽ lớn, khó implement.
  3. Chia thành các ProductService cho từng role của người dùng -> nhiều interface, lúc thêm role sẽ phải thêm interface.
    Mong mọi người gợi ý cho mình cách thiết kế với.

Cách 3
Open for extension, Closed for modification

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?