«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

MVVM / MVC(아키텍쳐)와 디자이패턴과 다른점은 무엇인가 본문

스터디

MVVM / MVC(아키텍쳐)와 디자이패턴과 다른점은 무엇인가

행복한 수지아빠 2025. 2. 7. 11:06

MVVM / MVC vs. 디자인 패턴 (팩토리 패턴 등)

MVVM(Model-View-ViewModel)과 MVC(Model-View-Controller)는 소프트웨어 아키텍처 패턴(Architectural Pattern) 이고, 팩토리 패턴(Factory Pattern) 같은 것은 디자인 패턴(Design Pattern) 입니다.

이 둘의 가장 큰 차이점은 다음과 같습니다.


1. 아키텍처 패턴 vs. 디자인 패턴

구분 아키텍처 패턴 (MVVM, MVC) 디자인 패턴 (팩토리 패턴 등)

목적 애플리케이션 전체의 구조를 정의 특정 문제를 해결하기 위한 재사용 가능한 코드 설계
규모 애플리케이션 전반에 적용 (전반적인 소프트웨어 아키텍처를 설계) 특정 기능이나 로직을 효과적으로 구현하기 위해 적용
예시 MVC, MVVM, MVP, Clean Architecture 팩토리 패턴, 싱글톤 패턴, 전략 패턴, 옵저버 패턴 등
사용 위치 프로젝트 전체의 코드 구조를 구성하는데 사용 특정 기능을 구현할 때 코드 재사용성과 유지보수성을 높이기 위해 사용

즉, MVVM이나 MVC는 애플리케이션의 전체적인 아키텍처 설계 방식이며, 팩토리 패턴 같은 디자인 패턴은 특정 기능을 효율적으로 구현하기 위한 방법입니다.


2. MVVM & MVC (아키텍처 패턴)

🏛️ 1) MVC (Model-View-Controller)

MVC는 전통적인 UI 애플리케이션 아키텍처 패턴입니다.

  • Model (모델): 데이터 및 비즈니스 로직 (DB, API 등)
  • View (뷰): UI 화면 (사용자에게 보이는 부분)
  • Controller (컨트롤러): Model과 View를 연결하고, 사용자의 입력을 처리

MVC 동작 흐름

  1. 사용자가 View(화면)에서 버튼을 클릭
  2. View는 이벤트를 Controller에게 전달
  3. Controller는 Model에서 데이터를 가져와 가공
  4. Model에서 데이터를 가공 후 Controller에 반환
  5. Controller는 가공된 데이터를 View에 전달하여 UI를 업데이트

➡️ 주로 웹 애플리케이션(예: Spring, ASP.NET MVC, Django 등) 에서 사용됨.


🏛️ 2) MVVM (Model-View-ViewModel)

MVVM은 주로 모바일 및 데스크톱 애플리케이션에서 사용되는 아키텍처 패턴입니다.

  • Model (모델): 데이터 및 비즈니스 로직 (DB, API 등)
  • View (뷰): UI 화면 (사용자에게 보이는 부분)
  • ViewModel (뷰모델): View와 Model을 연결하는 중간 역할, UI 로직을 처리

MVVM 동작 흐름

  1. 사용자가 View(화면)에서 버튼 클릭
  2. View는 ViewModel과 양방향 바인딩 (Binding)
  3. ViewModel은 Model에서 데이터를 가져와 View에 자동 반영
  4. ViewModel이 데이터를 가공하면 View도 자동으로 변경됨 (데이터 바인딩)

➡️ 주로 모바일(Flutter, Android, iOS) 및 데스크톱(WPF, SwiftUI) 애플리케이션에서 사용됨.

💡 MVVM은 데이터 바인딩 기능이 있어서, View가 직접 Model을 호출할 필요 없이 자동으로 UI 업데이트가 이루어짐
💡 MVC보다 ViewModel을 활용하여 UI 로직을 분리할 수 있어서 코드 유지보수가 쉬움


3. 팩토리 패턴 등 디자인 패턴

디자인 패턴(Design Pattern) 은 특정한 코딩 문제를 해결하는 일반적인 방법입니다.
MVVM이나 MVC와는 달리, 전체 애플리케이션이 아니라 특정 기능을 어떻게 구현할지에 대한 패턴입니다.

🎯 예제: 팩토리 패턴 (Factory Pattern)

팩토리 패턴은 객체 생성을 캡슐화하는 디자인 패턴입니다.

// 팩토리 패턴 예제 (Java)
class Car {
    String model;
    Car(String model) {
        this.model = model;
    }
}

class CarFactory {
    static Car createCar(String type) {
        if (type.equals("Sedan")) {
            return new Car("Sedan");
        } else if (type.equals("SUV")) {
            return new Car("SUV");
        }
        return null;
    }
}

// 사용
Car myCar = CarFactory.createCar("SUV");

✔️ 팩토리 패턴은 객체 생성을 감추고 필요할 때만 객체를 생성하는 방식
✔️ 클라이언트 코드에서 new 키워드를 직접 쓰지 않고 팩토리 메서드를 호출하여 객체 생성 가능


4. 정리

구분 MVVM & MVC (아키텍처 패턴) 팩토리 패턴 등 (디자인 패턴)

목적 애플리케이션의 전체적인 구조 설계 특정 기능이나 문제 해결을 위한 패턴
규모 큰 규모 (애플리케이션 전체 구조) 작은 규모 (특정 기능이나 클래스 설계)
사용 위치 애플리케이션의 아키텍처 객체 생성, 로직 처리, 이벤트 관리 등
예시 MVC, MVVM, MVP 팩토리 패턴, 싱글톤 패턴, 옵저버 패턴 등

✅ 결론

  • MVVM, MVC는 애플리케이션의 전체적인 설계를 위한 아키텍처 패턴
  • 팩토리 패턴 같은 디자인 패턴은 특정 기능을 효율적으로 구현하기 위한 코드 패턴
  • MVVM이나 MVC 내부에서 팩토리 패턴, 싱글톤 패턴 같은 디자인 패턴을 활용할 수 있음.

 

'스터디' 카테고리의 다른 글

지치지 않고 제대로 공부하는 7가지 방법  (0) 2018.12.18