"안녕, 아미고!"

"안녕, 빌라보!"

"당신은 이미 탄탄한 프로그래머입니다. 그래서 오늘은 MVC에 대한 강의를 하려고 합니다."

"MVC는 ModelViewController 의 약자입니다 . 응용 프로그램이 세 부분으로 분할되는 대규모 응용 프로그램의 아키텍처 디자인 패턴입니다."

"첫 번째 부분에는 애플리케이션의 모든 비즈니스 로직이 포함되어 있습니다. 이 부분은 모델 이라고 합니다 . 여기에는 애플리케이션이 수행하도록 생성된 모든 작업을 수행하는 코드가 포함되어 있습니다. 이 부분은 다른 부분에 가장 덜 의존적입니다."

"두 번째 부분에는 사용자에게 데이터를 표시하는 것과 관련된 모든 것이 포함되어 있습니다. 이 부분을 보기 라고 합니다 . 여기에는 창, 페이지, 메시지 등 표시를 제어하는 ​​코드가 포함되어 있습니다."

"세 번째 부분에는 사용자 작업을 처리하는 코드가 포함되어 있습니다 . 모델을 변경하려는 모든 사용자 작업은 여기에서 처리되어야 합니다. 이 부분을 컨트롤러 라고 합니다   ."

"이 접근 방식을 사용하면 프로그램의 논리(모델) , 프로그램의 데이터를 사용자에게 표시하는 메커니즘(보기) , 사용자 입력/작업 처리기(컨트롤러)의 세 가지를 독립적으로 만들 수 있습니다  ."

"응용 프로그램에는 여러 보기가 있는 경우가 많습니다 . 이는 정상입니다. Excel에서 정확히 동일한 데이터를 숫자와 다이어그램으로 볼 수 있습니다. 게임에서는 1인칭, 3인칭 또는 지도 보기 및 기타 여러 가지 방법으로 이벤트를 볼 수 있습니다. . 이 모든 것은 단일 모델 에 대한 서로 다른 보기 입니다 ."

"사용자 동작에 대한 응답으로 모델에서 무엇을 변경할지 결정하는 모든 코드는 컨트롤러에 수집됩니다 . 예를 들어 사용자가 프로그램을 종료하기로 결정하면 모델의 데이터를 디스크의 파일에 저장해야 합니다. 또는 사용자가 새 데이터를 입력하면 이를 모델에 추가해야 합니다. 그러면 모델이 모든 뷰에 데이터 변경 사항을 알리므로 데이터의 현재 상태만 표시됩니다."

"다시 말해봐."

"Java 개발자의 관점에서 볼 때 모델, 보기 및 컨트롤러는 다음과 같은 세 가지 클래스 그룹이라고 말할 수 있습니다."

" a)  각 부분에는 고유한 목적이 있습니다."

" b)  단일 그룹의 클래스 간의 관계가 매우 강합니다."

" c)  그룹 간의 관계가 매우 약합니다."

" d)  부품이 서로 통신하는 방식이 엄격하게 규제됩니다."

"그리고 그것을 묘사하는 또 다른 방법이 있습니다:

MVC-1

"모델은 시스템에서 가장 독립적인 부분 입니다 . 뷰나 컨트롤러에 의존하지 않습니다. 모델은 뷰 또는 컨트롤러 그룹(!)의 클래스를 사용할 수 없습니다."

"보기의 주요 제한은 모델을 변경할 수 없다는 것 입니다 . 보기 클래스는 데이터에 대한 모델에 액세스하거나 이벤트를 구독할 수 있지만 보기 클래스는 모델을 변경할 수 없습니다."

"컨트롤러의 주요 제한은 데이터를 표시하지 않는다는 것입니다 . 컨트롤러는 사용자 작업을 처리하고 그에 따라 모델을 수정합니다."

"그런데 이게 왜 필요한 거죠?"

"당신이 지금 이것을 사용하지 않는다고 해서 가까운 장래에 이것을 사용하지 않을 것이라는 의미는 아닙니다. 당신은 여기서 직업을 얻기 위해 공부하고 있습니다. 그리고 이 지식이 그 동안 유용하지 않더라도 공부하고, 일할 때 확실히 도움이 될 거야."

"결국 실제 프로젝트와 인터뷰가 여전히 여러분을 기다리고 있습니다..."

"우리는 지금 여기서 함께 이야기하고 있지만 아마도 한 달 안에 당신은 이미 일하게 될 것입니다."

"네 말이 맞아, Bilaabo. 잘 들어줄게."

"MVC 패턴은 애플리케이션 아키텍처에서 매우 일반적입니다. 더 편리하다고 생각하여 모델에 뷰 클래스를 갑자기 추가하기 시작하지 않도록 이를 알아야 합니다."

"모든 프로젝트에서 가장 중요한 것은 아키텍처입니다.  이 단계에서 당신의 임무는 좋은 아키텍처를 만드는 것이 아니라 다른 사람의 것을 이해하는 법을 배우는 것입니다 . 자신만의 것을 만들기 몇 년 전에 말이죠. 하지만 다른 사람들이 만든 것을 이해해야 합니다. 바로."

"응용 프로그램이 표준 아키텍처를 사용하면 모든 것이 훨씬 더 명확해집니다. 아키텍처를 알면 사물이 어디에 있는지, 모든 것이 어떻게 상호 작용하는지, 대략적인 프로그램 작동 방식, 필요한 클래스를 추가할 위치, 원인을 찾을 위치를 알 수 있습니다. 버그."

"하지만 건축에 대한 표준 접근 방식에 익숙하지 않으면 최고의 건축도 아무 것도 말해주지 않을 것입니다. 새 차를 바라보는 중세의 농부와 같을 것입니다. 표준 자동차."

"그렇군요. 흥미로운 수업 감사합니다, Bilaabo."

"마지막으로 꼭 확인해야 할 좋은 링크가 있습니다."

추가 자료 링크