Nguyên tắc trách nhiệm duy nhất nói rằng "một lớp nên có một lý do thay đổi".
Trong mẫu MVC, công việc của Trình điều khiển là làm trung gian giữa Chế độ xem và Mô hình. Nó cung cấp giao diện cho Chế độ xem để báo cáo các hành động do người dùng thực hiện trên GUI (ví dụ: cho phép Xem để gọi controller.specificButtonPressed()
) và có thể gọi các phương thức thích hợp trên Mô hình để thao tác dữ liệu của nó hoặc gọi các hoạt động của nó (ví dụ model.doSomething()
) .
Điều này có nghĩa rằng:
- Bộ điều khiển cần biết về GUI, để cung cấp Giao diện Xem phù hợp để báo cáo hành động của người dùng.
- Nó cũng cần biết về logic trong Mô hình, để có thể gọi các phương thức thích hợp trên Mô hình.
Điều đó có nghĩa là có hai lý do để thay đổi : thay đổi GUI và thay đổi logic buisness.
Nếu GUI thay đổi, ví dụ: một nút mới được thêm vào, Bộ điều khiển có thể cần thêm một phương thức mới để cho phép View báo cáo người dùng nhấn vào nút này.
Và nếu logic nghiệp vụ trong Mô hình thay đổi, Bộ điều khiển có thể phải thay đổi để gọi các phương thức chính xác trên Mô hình.
Do đó, Bộ điều khiển có hai lý do có thể thay đổi . Nó có phá vỡ SRP không?