Wikipedia mô tả các Single Responsibility Principle theo cách này:Việc sử dụng truyền thống của bộ điều khiển trong MVC có dẫn đến vi phạm Nguyên tắc về Trách nhiệm duy nhất không?
Các đơn Trách nhiệm Nguyên tắc khẳng định rằng tất cả các đối tượng nên có trách nhiệm duy nhất, và trách nhiệm đó phải được hoàn toàn đóng gói bởi lớp. Tất cả các dịch vụ của nó phải được liên kết chặt chẽ với trách nhiệm đó.
Việc sử dụng bộ điều khiển truyền thống trong MVC dường như dẫn đến một lập trình viên vi phạm nguyên tắc này. Lấy một bộ điều khiển và chế độ xem sách khách đơn giản. Bộ điều khiển có thể có hai phương thức/hành động: 1) Chỉ mục() và 2) Gửi(). Chỉ mục() hiển thị biểu mẫu. Submit() xử lý nó. Hai phương pháp này có đại diện cho hai trách nhiệm riêng biệt không? Nếu vậy, làm thế nào để tính duy nhất có thể chơi?
Tôi đồng ý, nó không tự vi phạm mẫu MVC, nhưng nó khuyến khích bạn - bạn sẽ đặt hành động liên quan đến người dùng mới ở đâu? Tại sao, trong UserController tất nhiên. Khá sớm nó phát triển ngoài tầm kiểm soát, chứa đầy các phương thức hành động không có sự phụ thuộc vào nhau, nhưng được nhóm lại chỉ vì nó thuận tiện. Tôi bắt đầu một cuộc thảo luận [ở đây] (https://gist.github.com/mindplay-dk/5505023) để tranh luận về ý tưởng làm việc với Bộ điều khiển, và nhóm các Hành động vào các không gian tên thay thế. –