ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1067)
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (180)
      • Unreal (69)
      • Unity (100)
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (235)
      • 공통 (21)
      • 네트워크 (44)
      • OS & 하드웨어 (55)
      • 자료구조 & 알고리즘 (98)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (346)
      • C++ (167)
      • C# (88)
      • Java (9)
      • Python (33)
      • SQL (30)
      • JavaScript (8)
      • React (7)
    • 그 외 (9)
      • Math (5)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • c#
  • C
  • SQL
  • 포인터
  • 오블완
  • 프로그래머스
  • C++
  • Unity
  • 파이썬
  • 알고리즘
  • 문자열
  • 배열
  • 언리얼
  • 그래픽스
  • string
  • 티스토리챌린지
  • 백준
  • 유니티
  • 함수
  • 클래스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

[Unity] MVC, MVP, MVVM 디자인 패턴
게임엔진/Unity

[Unity] MVC, MVP, MVVM 디자인 패턴

2023. 10. 19. 11:34

MVC 패턴

▶ Model - View - Controller로 각각에 대한 역할을 구분하여 독립적인 기능을 수행하도록 설계하는 디자인 패턴이다.

 

▣ Model

: 어플리케이션에서 사용하는 데이터의 집합이라고 볼 수 있다.

▣ View

: 어플리케이션에서 사용자에게 보여지는 화면, UI 이라고 볼 수 있다.

▣ Controller

: Model과 View를 이어주는 징검다리의 역할로 사용자는 Controller를 사용하여 Model의 데이터를 수정하게 된다.

[ MVC 패턴 ]

: MVC 패턴은 Model의 업데이트에 따라 View에 적용이 되야하는 부분에서 서로 간의 의존성이 발생하게 된다.

MVP 패턴

▶ MVC 패턴에서 파생된 디자인 패턴으로 Controller를 대신해 Presenter가 추가되었다.

 

▣ Presenter

: Controller의 역할 + Model과 View의 의존성을 끊고 View는 Presenter를 통해서 화면을 보여주게 된다.

[ MVP 패턴 ]

: Presenter에서 화면 갱신과 데이터 갱신을 모두 처리한다.

MVVM 패턴

▶ MVP 패턴에서 파생된 디자인 패턴으로 Presenter를 대신해 ViewModel이 추가되었다.

[ MVVM 패턴 ]

: View와 View Model 사이의 모델 데이터가 바인딩되어 Model이 갱신되면 ViewModel의 데이터가 갱신되고, ViewModel의 갱신되는 순간 View도 같이 갱신된다. MVP, MVC가 Model이 갱신되면, 갱신되었다는 정보를 View에 전달하는 반면 MVVM은 데이터가 연결되어 갱신이 바로 발생한다.

게임에 어떠한 패턴을 적용할 것인가?

: 특정 디자인 패턴이 정답이다. 라고 말할 수 없는 영역이 게임 디자인 패턴이라고 할 수 있다. 프로젝트에 상황에 따라 특정 디자인 패턴이 좋을 수도 있고 나쁠 수도 있기 때문이다. 하지만 게임에서는 MVC, MVP, MVVM이 되었든, 데이터와 화면과 시스템은 각각 분리되어 처리되어야만 한다.

예를들어 데이터와 화면이 연결되어 있다고 했을 때, 서버에서 데이터를 받아서 화면을 보여는 상황이면 게임은 멈춰있을 수 밖에 없게 된다. 데이터를 받아와야지만 화면이 보여지기 때문이다. 하지만 위의 패턴을 사용하면 화면은 모델에 데이터가 없으면 없는 그대로 사용자에게 보여줄 수도 있고, 모델의 이전 데이터를 가지고 보여주다가 서버에서 데이터를 받아오면 갱신해서 보여줄 수도 있다.

 

 

[Unity] MVC, MVP, MVVM 소프트웨어 디자인 패턴 (tistory.com)

저작자표시 (새창열림)

'게임엔진 > Unity' 카테고리의 다른 글

[Unity] DOTS: Jobs, Burst, ECS 간단 정리  (0) 2024.01.04
[Unity] ThreadPool (스레드풀)  (0) 2024.01.03
[Unity] 플랫폼별 컴파일 (전처리기)  (0) 2023.09.22
[Unity] 레이어 소팅레이어 태그 설정  (0) 2023.09.19
[Unity] CSV 파일 저장, 불러오기 Read, Write 간단 사용법  (0) 2023.09.18
    '게임엔진/Unity' 카테고리의 다른 글
    • [Unity] DOTS: Jobs, Burst, ECS 간단 정리
    • [Unity] ThreadPool (스레드풀)
    • [Unity] 플랫폼별 컴파일 (전처리기)
    • [Unity] 레이어 소팅레이어 태그 설정
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바