Tôi muốn xác thực một số đối tượng. Xác nhận có hai phần:Giải pháp thiết kế cần thiết cho Kịch bản xác nhận
- xác nhận cho dù người dùng có quyền truy cập vào các đối tượng (các quyền cụ thể đã được tính toán và lưu trữ trong các giá trị boolean, có tối đa 4 vai trò)
- kiểm tra nếu đối tượng là trong một trạng thái nhất định (từ một tập các trạng thái)
tôi có rất nhiều các quy tắc (trên thực tế khoảng 25 trong tổng số) giống như những người dưới đây mà cần phải được xác nhận:
- isOwner & & (trạng thái == 11 || status == 13 || tình trạng == 14)
- ! (isOwner & & isReceiver & & status == 12)
- .....
Tôi đã những quy tắc trải ra trong một số phương pháp, 4 hoặc 5 quy tắc trong một phương pháp. Nếu quy tắc không thành công thì các quy tắc khác sẽ không được chọn. Tôi cần xây dựng trình xác thực (hoặc thiết lập một trình xác thực đã được xây dựng) trong mọi phương thức sử dụng xác thực này.
Tôi đang tìm mẫu thiết kế có thể giúp xây dựng cấu trúc để xác thực đối tượng dễ dàng hơn. Mục tiêu của tôi là có thể cung cấp các thông báo lỗi cụ thể. Ví dụ: nếu xác thực không thành công vì người dùng không có quyền thì tôi muốn cho họ biết điều này. Nếu nó không thành công vì trạng thái của đối tượng thì tôi muốn hiển thị .
Đầu tiên tôi mặc dù kiểu trang trí. Tôi có một đối tượng xử lý thông báo lỗi có thể được trang trí với các thông báo lỗi cụ thể. Một người trang trí sẽ kiểm tra quyền của người dùng và một người khác cho các tiểu bang. Nhưng thứ tự mà tôi đang xây dựng các đối tượng validator không quan trọng nên sức mạnh của pattern decorator không được sử dụng. (AFAIK đây là một lợi thế lớn của việc sử dụng trang trí - trộn đồ trang trí). Tôi nghĩ rằng một chuỗi có thể tốt hơn cho trường hợp này ...?!?! Bạn muốn giới thiệu thiết kế thay thế nào cho kịch bản này?
Bạn đang sử dụng .net và C#? – garik
@igor: nó có quan trọng không? – cherouvim
@igor: Tôi nghĩ điều đó không quan trọng, ý tưởng này được áp dụng ở mọi ngôn ngữ. BTW Tôi đang sử dụng Java. – Atticus