Khi nghĩ đến việc phát triển phần mềm nhanh và tất cả các nguyên tắc (SRP, OCP, ...) tôi tự hỏi mình cách xử lý đăng nhập.
Việc đăng nhập bên cạnh việc triển khai có vi phạm SRP không?
Tôi sẽ nói yes
bởi vì việc thực hiện cũng có thể chạy mà không cần đăng nhập. Vì vậy, làm thế nào tôi có thể thực hiện đăng nhập một cách tốt hơn? Tôi đã kiểm tra một số mẫu và đưa ra kết luận rằng cách tốt nhất để không vi phạm các nguyên tắc theo cách do người dùng xác định, nhưng sử dụng bất kỳ mẫu nào được biết là vi phạm nguyên tắc là sử dụng mẫu trang trí.
Giả sử chúng ta có một loạt các thành phần hoàn toàn không có vi phạm SRP và sau đó chúng tôi muốn thêm ghi nhật ký.
- thành phần A
- thành phần B sử dụng A
Chúng tôi muốn đăng nhập cho A, vì vậy chúng tôi tạo một thành phần D khác được trang trí bằng A cả hai thực hiện giao diện I.
- giao diện tôi
- thành phần L (thành phần đăng nhập của hệ thống)
- thành phần A thực hiện I
- thành phần D thực hiện I, trang trí / sử dụng A, sử dụng L để ghi nhật ký
- thành phần B sử dụng I
Ưu điểm: - Tôi có thể sử dụng A mà không cần đăng nhập - thử nghiệm A có nghĩa là tôi không cần bất kỳ giả lập đăng nhập nào - các thử nghiệm đơn giản hơn
Nhược điểm: - nhiều thành phần hơn và nhiều thử nghiệm hơn
Tôi biết đây có vẻ là một câu hỏi thảo luận mở khác, nhưng tôi thực sự muốn biết liệu ai đó sử dụng chiến lược ghi nhật ký tốt hơn so với vi phạm trang trí hay vi phạm SRP. Điều gì về logger singleton tĩnh như là NullLogger mặc định và nếu muốn ghi nhật ký nhật ký hệ thống, người ta sẽ thay đổi đối tượng thực hiện trong thời gian chạy?