단일 책임 원칙에 따르면 "클래스에는 변화가 한 가지 이유가 있어야합니다".
MVC 패턴에서 컨트롤러의 작업은 뷰와 모델 사이를 중재하는 것입니다. 그것은 (예를 들어 통화에보기를 허용 GUI에서 사용자가 만든 보고서 작업을보기위한 인터페이스를 제공합니다 controller.specificButtonPressed()
(예를 들어)를, 그리고 그것의 데이터를 조작하기 위해 또는 그것의 작업을 호출하는 모델의 해당 메소드를 호출 할 수 있습니다 model.doSomething()
) .
이것은 다음을 의미합니다.
- View에 사용자 조치를보고하기에 적합한 인터페이스를 제공하려면 컨트롤러가 GUI에 대해 알아야합니다.
- 또한 모델에서 적절한 메소드를 호출하려면 모델의 논리에 대해 알아야합니다.
즉 , GUI 변경과 비즈니스 로직 변경 이라는 두 가지 이유가 있습니다 .
GUI가 변경되면 (예 : 새 버튼 추가) Controller가 View에 사용자가이 버튼을 눌렀 음을보고 할 수 있도록 새로운 방법을 추가해야 할 수도 있습니다.
그리고 모델의 비즈니스 로직이 변경되면 모델에서 올바른 메소드를 호출하기 위해 컨트롤러를 변경해야 할 수도 있습니다.
따라서 컨트롤러에는 변경해야 할 두 가지 이유가 있습니다 . SRP가 깨 집니까?