MVC 아키텍쳐
Model-View-Controller 아키텍쳐
MVC 아키텍쳐는 소프트웨어 디자인 패턴 중 하나이다.
프로그램(애플리케이션)을 모델, 뷰, 컨트롤러 3가지로 나누어 개발하는 방법론이다.
모델
-
게임의 데이터나 비즈니스 로직을 담당
-
데이터의 상태를 저장하고 관련된 모든 작업을 수행(체력, 레벨, 인벤토리 등의 정보 저장, 데미지나 아이템 획득과 같은 로직 처리)
-
UI나 컨트롤러에 대한 정보를 가지고 있지 않아야 함
-
데이터가 변경되면 연관된 요소들에 데이터가 변경되었음을 알려주는 기능이 있어야 함
뷰
-
사용자에게 보여지는 화면을 담당. 모델의 데이터를 시각화
-
UI를 포함하며 모델의 데이터를 받아 화면에 나타냄
-
데이터의 처리 방법이나 모델, 컨트롤러 같은 구성 요소는 몰라야 함
-
모델의 변경 사항을 화면에 업데이트 해줘야 함
컨트롤러
-
사용자의 입력을 처리하고 프로그램의 흐름을 제어
-
모델에서 데이터를 가져오거나 수정하여 뷰에서 받은 사용자의 입력을 처리
-
모델 - 뷰 간의 통신을 관리하고 서로간의 의존성을 줄임
MVC 동작 방식
-
사용자 - 뷰 간의 상호작용
-
뷰가 사용자의 요청을 컨트롤러에 전달
-
컨트롤러는 사용자의 요청을 처리하고 필요한 데이터의 처리를 모델에 요청
-
모델은 컨트롤러의 요청에 따라 데이터를 변경, 처리하고 결과를 컨트롤러에 전달
-
컨트롤러는 모델로부터 받은 데이터나 결과를 뷰에 전달하여 화면을 업데이트
-
뷰는 컨트롤러가 전달한 데이터를 사용하여 사용자에게 보여지는 화면을 업데이트
MVC의 장점
-
유지보수 용이성 : M, V, C로 분리되어 유지보수가 편리함
-
유연성 : M, V, C가 각각 독립적이기 때문에 변경이 쉬움
-
재사용성 : 독립적이기 때문에 재사용이 쉬움
-
테스트 용이성 : 역시 독립적이기 때문에 테스트도 쉬움
-
협업 : 역할에 따라 업무 분담이 용이
MVC의 단점
-
복잡성 : 클래스 개수가 많아져 복잡해 보일 수 있음
-
러닝 커브 : 패턴에 대한 이해가 필요. 이해도가 떨어지면 코드 관리가 어려워짐
-
속도 : 상속과 참조 때문에 속도가 떨어질 수 있음
게임에서의 활용
-
캐릭터 시스템
-
인벤토리 시스템템