https://www.codeproject.com/articles/613682/your-first-program-using-mvc-pattern-with-csharp-w
에 있는 MVC 예제 코드에 대해서 질문이 있습니다.
위의 예제코드는 버튼을 누를 때 마다 textbox에 있는 숫자가 하나 씩 증가하도록 MVC 패턴을 이용하여 만든 winform 예제인데요.
버튼을 클릭했을 경우에는 다음 시나리오로 모델 내부의 정수 변수의 값이 하나 커지고 view에 그것이 반영됩니다.
1. button1_Click event가 발생하면 Form1의 button1_click 이벤트 핸들러가 호출
2. button1_click 함수가 controller의 incvalue 함수를 호출
3. controller의 incvalue 함수가 model의 increment 함수를 호출
4. model의 value 변수의 값을 1 증가시키고 model의 changed 이벤트 핸들러들을 invoke
5. changed 이벤트에 등록되었던 Form1의 valueIncremented 이벤트 핸들러가 호출되며 textbox의 값을 업데이트된 값으로 변경
다음은 textBox1_Leave 이벤트에 대한 시나리오입니다.
1. textBox1_Leave 이벤트가 발생하면 Form1의 textBox1_Leave 이벤트 핸들러가 호출
2. Form1의 changed 이벤트 핸들러들을 invoke (model과 Form1에 각각 changed 이벤트 핸들러가 있습니다.)
3. changed 이벤트에 등록되었던 controller의 view_changed 이벤트 핸들러가 호출
4. view_changed 이벤트 핸들러가 model의 setvalue를 textbox의 값을 인자로 호출
5. setvalue에서 인자로 받은 값을 model의 value 변수에 저장
여기서 전자의 경우에서는 버튼 클릭 이벤트를 view에서 controller의 함수를 호출로 처리하는데
후자에서는 어떤 이유로 텍스트박스 리브 이벤트를 이벤트 핸들링 방식으로 처리를 하는지가 궁금합니다.
제가 고민해본 결과는 IController의 incvalue 함수와 IModel의 increment 함수를 통하여 이 함수를 반드시 구현하게 하여 첫번째 경우에 대해서는 명확한 처리를 요구하지만,
두번째 경우에 대해서는 어떤 처리를 강요하지 않고 사용자가 알아서 처리하라는 건가요?
생각할수록 알쏭달쏭합니다. 이벤트를 처리할 때 언제 함수를 이용해야하고 언제 이벤트 핸들러 invoke를 이용해야 할지 조언 부탁드립니다.
오아아아앙이야유유어