UI와 소프트웨어 내부 처리를 분리하는 디자인 패턴이다.
1. 구성 요소
(1) 모델(Model)
- 데이터 자체
- 컨트롤러 혹은 뷰에 의존성을 가지면 안됨
ex) 속성 세트(Attribute Set)
(2) 뷰(View)
- 인터페이스
- 모델에서 가져온 데이터를 화면에 표시함
- UI를 바꿔도 모델이나 컨트롤러가 바뀌면 안됨(종속성을 가지면 안됨)
ex) 위젯 블루프린트
(3) 컨트롤러(Controller)
- 입력을 처리하고 데이터를 가공하여 뷰로 전달함
- 모델과 뷰 사이의 징검다리
ex) 위젯 컨트롤러
2. 작동 방식
(1) 사용자 입력 (뷰 -> 컨트롤러)
사용자에게 받은 입력을 컨트롤러가 감지한다.
(2) 로직 처리 (컨트롤러 -> 모델)
받은 입력에 따라 데이터를 가공한다.
(3) UI 업데이트 (모델 -> 뷰)
가공된 데이터를 UI로 출력한다.
3. 장점
- UI와 로직이 분리되어 유지보수가 쉬워짐, 확장성 증대
- 뷰와 모델이 분리되어 코드 재사용성 증가
4. 한계
(1) 초기 정의에서 벗어남
초기에 단순히 뷰, 모델, 컨트롤러로 독립적으로 작동되던 역할이 현대로 오면서 변화됨.
(2) 컨트롤러의 역할
컨트롤러가 뷰를 건드리게 되면서 뷰의 렌더링까지 침해.
또는 컨트롤러가 뷰와 완전히 독립되어야 한다는 주장이 제기됨.
(3) 웹과 로컬 환경에서의 MVC가 다름
이러한 문제를 해결하기 위해 MVVM 패턴이 등장하게 되었다.
5. 사용 예
9-5. 오버레이 UI - (5) 오버레이 위젯 컨트롤러에서 위젯으로 어빌리티 정보 보내기
19-5. 오버레이 UI - (5) 오버레이 위젯 컨트롤러에서 위젯으로 어빌리티 정보 보내기
1. 델리게이트 선언(1) AuraAbilitySystemComponent에서 델리게이트 선언커스텀 어빌리티 시스템 컴포넌트에서 어빌리티를 각 액터에게 부여하고 있다.새로운 델리게이트를 사용하여 어빌리티가 부여되
crat.tistory.com