
MVC 패턴 (MVC pattern)
Model-View-Controller의 약자 소프트웨어를 세 가지 주요 구성 요소로 나누어 개발하는 방법을 제공 각 구성 요소는 특정한 역할을 수행하며 서로 간섭을 최소화하여 유지보수와 확장성을 향상
import java.util.ArrayList;
import java.util.List;
public class TodoModel { //애플리케이션의 데이터와 비즈니스 로직을 관리
private List<String> todos; //할 일 목록을 저장하는 리스트
public TodoModel() {
this.todos = new ArrayList<>();
}
public void addTodo(String todo) { //새로운 할 일을 목록에 추가
todos.add(todo);
}
public List<String> getTodos() { //현재의 할 일 목록을 반환
return todos;
}
}
public class TodoView { //사용자 인터페이스 담당
public void showTodos(List<String> todos) { // 할 일 목록을 받아와서 간단히 콘솔에 출력
for (String todo : todos) {
System.out.println(todo);
}
}
}
import java.util.Scanner;
public class TodoController { //사용자 입력을 받아 처리하고 모델과 뷰를 관리
private TodoModel model;
private TodoView view;
public TodoController(TodoModel model, TodoView view) {
this.model = model;
this.view = view;
}
public void addTodo() { //사용자로부터 새로운 할 일을 입력받아 모델에 추가한 후, 뷰를 업데이트
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a new todo: ");
String todo = scanner.nextLine();
model.addTodo(todo);
updateView();
}
public void updateView() { //현재의 할 일 목록을 모델에서 가져와서 뷰를 업데이트
List<String> todos = model.getTodos();
view.showTodos(todos);
}
}
Main 클래스 :
public class Main {
public static void main(String[] args) {
TodoModel model = new TodoModel();
TodoView view = new TodoView();
TodoController controller = new TodoController(model, view);
// 추가된 할 일 목록 보기
controller.updateView();
// 새로운 할 일 추가
controller.addTodo();
// 업데이트된 할 일 목록 보기
controller.updateView();
}
}
이 예시에서는 TodoModel이 데이터와 비즈니스 로직을 처리하고,
TodoView가 사용자에게 데이터를 표시하며,
TodoController가 사용자 입력을 처리하고 모델과 뷰를 연결합니다.
이렇게 하면 각 구성 요소가 독립적으로 변경될 수 있고, 유지보수와 확장이 쉬워집니다.