MVVM 패턴(Model-View-ViewModel Pattern)은 애플리케이션의 UI 로직을 모델(Model), 뷰(View), 뷰모델(ViewModel)로 분리하여 코드의 재사용성과 테스트 용이성을 향상시키는 아키텍처 패턴이다.
특히 데이터 바인딩(Data Binding)을 지원하는 프레임워크에서 효과적이다.
MVVM 패턴은 대규모 애플리케이션에서 UI와 비즈니스 로직의 결합을 줄이고 코드의 가독성과 유지보수성을 높인다.
특히 데이터 바인딩을 통해 뷰(View)와 뷰모델(ViewModel)의 상호작용을 자동화할 수 있다.
MVVM 패턴은 리액트(React), 앵귤러(Angular), WPF(Windows Presentation Foundation), 안드로이드 같은 프레임워크에서 흔히 사용된다.
사용자가 할 일을 추가하거나 삭제하는 애플리케이션에서 MVVM 패턴을 활용할 수 있다.
[View] <--> [ViewModel] <--> [Model]
할 일 관리 애플리케이션에서 할 일 목록을 표시하고 관리하는 기능을 구현해 보자.
// Task 모델 클래스: 할 일 데이터를 관리하는 클래스
public class Task {
private String title;
public Task(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
// TaskViewModel 클래스: 할 일 목록과 사용자 액션을 처리하는 뷰모델 역할
import java.util.ArrayList;
import java.util.List;
public class TaskViewModel {
private List<Task> tasks = new ArrayList<>();
public List<Task> getTasks() {
return tasks;
}
public void addTask(String title) {
if (title == null || title.trim().isEmpty()) {
System.out.println("오류: 할 일 제목을 입력해야 합니다.");
return;
}
tasks.add(new Task(title));
System.out.println("할 일이 추가되었습니다: " + title);
}
public void removeTask(String title) {
tasks.removeIf(task -> task.getTitle().equals(title));
System.out.println("할 일이 삭제되었습니다: " + title);
}
}
// TaskView 클래스: 사용자와 상호작용하며 데이터를 출력하는 뷰 역할
public class TaskView {
private TaskViewModel viewModel;
public TaskView(TaskViewModel viewModel) {
this.viewModel = viewModel;
}
public void displayTasks() {
List<Task> tasks = viewModel.getTasks();
System.out.println("할 일 목록:");
for (Task task : tasks) {
System.out.println("- " + task.getTitle());
}
}
}
// Main 클래스: MVVM 패턴으로 할 일을 관리하는 예시
public class Main {
public static void main(String[] args) {
TaskViewModel viewModel = new TaskViewModel();
TaskView view = new TaskView(viewModel);
// 할 일 추가
viewModel.addTask("MVVM 패턴 학습");
viewModel.addTask("Java 프로젝트 완료");
view.displayTasks();
// 할 일 삭제
viewModel.removeTask("Java 프로젝트 완료");
view.displayTasks();
}
}
할 일이 추가되었습니다: MVVM 패턴 학습
할 일이 추가되었습니다: Java 프로젝트 완료
할 일 목록:
- MVVM 패턴 학습
- Java 프로젝트 완료
할 일이 삭제되었습니다: Java 프로젝트 완료
할 일 목록:
- MVVM 패턴 학습
MVVM 패턴은 데이터 바인딩을 적극 활용하여 UI와 비즈니스 로직을 효과적으로 분리하는 패턴이다.
효율적인 아키텍처 설계를 위해 MVVM 패턴을 고려해보자.
아래 글에서 다른 아키텍쳐 패턴들을 확인할 수 있다.
아키텍처 패턴 모음