SOLID 원칙은 유연하고 유지보수가 용이한 객체지향 소프트웨어를 설계하는 것이다.
그리고 디자인 패턴 중 하나인 MVC와 MVVM 패턴은 이러한 SOLID 원칙을 지향하며, 유니티와 언리얼 엔진에서 주로 사용하는 패턴이다.
1. MVC 패턴
구조
- Model: 데이터와 비즈니스 로직을 처리하는 부분.
- View: 사용자 인터페이스를 담당하며 Model의 데이터를 시각적으로 표시.
- Controller: 사용자 입력을 받아 Model과 View를 연결.
이를 SOLID 원칙의 관점에서 보면 다음과 같이 정리할 수 있다.
- S (단일 책임 원칙)
각 컴포넌트(Model, View, Controller)는 명확한 책임을 가짐.
예: Model은 데이터 관리만, View는 UI 렌더링만, Controller는 입력 처리만 담당. - O (개방-폐쇄 원칙)
새로운 View나 Controller를 추가하더라도 기존 Model과는 최소한의 영향을 줌.
새로운 기능은 컴포넌트를 확장하여 구현할 수 있음. - L (리스코프 치환 원칙)
Model이나 View가 추상화된 인터페이스를 구현할 경우, 이를 대체하는 하위 클래스가 동일하게 동작해야 함.
예: Model 인터페이스를 구현한 다양한 데이터 소스 클래스가 교체 가능. - I (인터페이스 분리 원칙)
View와 Controller는 서로 필요한 기능만 사용하도록 인터페이스로 분리.
예: View는 Model의 모든 데이터를 알 필요 없이 필요한 데이터만 제공받음. - D (의존 역전 원칙)
Controller는 Model과 View에 의존하되, 이를 구체적인 구현이 아닌 인터페이스나 추상 클래스를 통해 참조.
2. MVVM 패턴
구조
- Model: MVC와 동일하게 데이터와 비즈니스 로직을 처리.
- View: 사용자 인터페이스를 담당.
- ViewModel: View와 Model 사이의 중재자 역할. View와의 데이터 바인딩을 관리.
이를 SOLID 원칙의 관점에서 보면 다음과 같이 정리할 수 있다.
- S (단일 책임 원칙)
Model은 비즈니스 로직과 데이터 처리만 담당.
ViewModel은 데이터 바인딩 및 UI 로직만 처리.
View는 화면 표시만 책임짐. - O (개방-폐쇄 원칙)
새로운 View를 추가하더라도 기존 Model과 ViewModel을 재사용 가능.
확장성 있는 구조로 새로운 기능을 쉽게 추가. - L (리스코프 치환 원칙)
Model과 ViewModel이 인터페이스나 추상화를 통해 설계된다면, 다른 구현체로 대체 가능. - I (인터페이스 분리 원칙)
View는 ViewModel의 필요한 데이터만 구독.
ViewModel은 Model의 필요한 데이터만 사용. - D (의존 역전 원칙)
View는 ViewModel에 의존하지만, 이는 구체적인 구현이 아닌 추상화된 데이터 바인딩 인터페이스를 통해 이루어짐.
MVC vs MVVM
MVC는 Controller를 통해 View와 Model의 연결을 관리하며, 주로 UI와 로직이 분리되지만, 대규모 애플리케이션에서는 Controller가 복잡해질 수 있다. 특히, MVVM은 데이터 바인딩을 활용해 View와 ViewModel 간의 의존성을 줄이며, UI 로직을 ViewModel로 분리해 유지보수가 더 용이하다.
'Study > Design Pattern' 카테고리의 다른 글
Unity의 SOLID (0) | 2025.01.18 |
---|