MVC 아키텍쳐


Model-View-Controller 아키텍쳐


MVC 아키텍쳐는 소프트웨어 디자인 패턴 중 하나이다.

프로그램(애플리케이션)을 모델, 뷰, 컨트롤러 3가지로 나누어 개발하는 방법론이다.


모델


  • 게임의 데이터나 비즈니스 로직을 담당

  • 데이터의 상태를 저장하고 관련된 모든 작업을 수행(체력, 레벨, 인벤토리 등의 정보 저장, 데미지나 아이템 획득과 같은 로직 처리)

  • UI나 컨트롤러에 대한 정보를 가지고 있지 않아야 함

  • 데이터가 변경되면 연관된 요소들에 데이터가 변경되었음을 알려주는 기능이 있어야 함



  • 사용자에게 보여지는 화면을 담당. 모델의 데이터를 시각화

  • UI를 포함하며 모델의 데이터를 받아 화면에 나타냄

  • 데이터의 처리 방법이나 모델, 컨트롤러 같은 구성 요소는 몰라야 함

  • 모델의 변경 사항을 화면에 업데이트 해줘야 함


컨트롤러


  • 사용자의 입력을 처리하고 프로그램의 흐름을 제어

  • 모델에서 데이터를 가져오거나 수정하여 뷰에서 받은 사용자의 입력을 처리

  • 모델 - 뷰 간의 통신을 관리하고 서로간의 의존성을 줄임


MVC 동작 방식


  1. 사용자 - 뷰 간의 상호작용

  2. 뷰가 사용자의 요청을 컨트롤러에 전달

  3. 컨트롤러는 사용자의 요청을 처리하고 필요한 데이터의 처리를 모델에 요청

  4. 모델은 컨트롤러의 요청에 따라 데이터를 변경, 처리하고 결과를 컨트롤러에 전달

  5. 컨트롤러는 모델로부터 받은 데이터나 결과를 뷰에 전달하여 화면을 업데이트

  6. 뷰는 컨트롤러가 전달한 데이터를 사용하여 사용자에게 보여지는 화면을 업데이트


MVC의 장점


  • 유지보수 용이성 : M, V, C로 분리되어 유지보수가 편리함

  • 유연성 : M, V, C가 각각 독립적이기 때문에 변경이 쉬움

  • 재사용성 : 독립적이기 때문에 재사용이 쉬움

  • 테스트 용이성 : 역시 독립적이기 때문에 테스트도 쉬움

  • 협업 : 역할에 따라 업무 분담이 용이


MVC의 단점


  • 복잡성 : 클래스 개수가 많아져 복잡해 보일 수 있음

  • 러닝 커브 : 패턴에 대한 이해가 필요. 이해도가 떨어지면 코드 관리가 어려워짐

  • 속도 : 상속과 참조 때문에 속도가 떨어질 수 있음


게임에서의 활용


  • 캐릭터 시스템

  • 인벤토리 시스템템