MVC 패턴이란 무엇일까?

2024. 6. 28. 20:15·Backend Programming

MVC (Model-View-Controller) 패턴은 소프트웨어 설계 패턴 중 하나로, 어플리케이션을 세 가지 주요 컴포넌트로 분리하여 개발의 복잡성을 줄이고, 코드의 재사용성과 유지보수성을 높이는 데 도움을 줍니다.

 

Model (모델)

  • 역할: 어플리케이션의 데이터 구조를 관리합니다. 데이터베이스와의 상호작용, 데이터 유효성 검사 등의 비즈니스 로직을 담당합니다.
  • 예시: 사용자 정보, 제품 목록, 주문 내역 등의 데이터 관리.
public class User {
    private String name;
    private String email;

    // 생성자, getter, setter
}

 

View (뷰)

  • 역할: 사용자 인터페이스(UI)를 담당합니다. 모델의 데이터를 사용자에게 보여주고, 사용자로부터 입력을 받아 이를 컨트롤러에 전달합니다.
  • 예시: 웹 페이지, 모바일 앱 화면, 데스크톱 애플리케이션의 GUI 등.
public class UserView {
    public void printUserDetails(String userName, String userEmail) {
        System.out.println("User: ");
        System.out.println("Name: " + userName);
        System.out.println("Email: " + userEmail);
    }
}

 

Controller (컨트롤러)

  • 역할: 사용자 입력을 처리하고, 이를 모델에 반영하거나 모델의 데이터를 뷰에 전달합니다. 뷰와 모델 사이의 상호작용을 중재합니다.
  • 예시: 로그인 버튼 클릭 시 사용자 인증 처리, 폼 제출 시 데이터 저장 처리 등.
public class UserController {
    private User model;
    private UserView view;

    public UserController(User model, UserView view) {
        this.model = model;
        this.view = view;
    }

    public void setUserName(String name) {
        model.setName(name);
    }

    public String getUserName() {
        return model.getName();
    }

    public void setUserEmail(String email) {
        model.setEmail(email);
    }

    public String getUserEmail() {
        return model.getEmail();
    }

    public void updateView() {
        view.printUserDetails(model.getName(), model.getEmail());
    }
}

 

왜 사용하는 걸까?

  1. 분리된 관심사(Separation of Concerns)
    • MVC 패턴은 어플리케이션의 관심사를 명확하게 분리하여 각각의 역할을 독립적으로 관리할 수 있게 합니다. 이를 통해 코드의 가독성과 유지보수성을 높입니다.
    • 예를 들어, UI 변경이 필요할 때 모델과 컨트롤러에 영향을 주지 않고 뷰만 수정하면 됩니다.
  2. 재사용성과 확장성
    • 모델, 뷰, 컨트롤러 각각이 독립적으로 존재하므로 다른 프로젝트에서도 쉽게 재사용할 수 있습니다.
    • 어플리케이션의 기능을 확장할 때, 기존 코드에 최소한의 영향을 주면서 새로운 기능을 추가할 수 있습니다.
  3. 테스트 용이성
    • 각 컴포넌트가 독립적이기 때문에 단위 테스트(Unit Test)가 용이합니다. 모델, 뷰, 컨트롤러 각각을 독립적으로 테스트할 수 있습니다.
    • 예를 들어, 모델의 비즈니스 로직을 테스트할 때 뷰와 컨트롤러의 구현에 영향을 받지 않습니다.
  4. 병렬 개발
    • 개발 팀이 모델, 뷰, 컨트롤러를 나누어 병렬로 작업할 수 있어 개발 속도가 빨라집니다.
    • 예를 들어, 프론트엔드 개발자는 뷰를, 백엔드 개발자는 모델을, 또 다른 개발자는 컨트롤러를 각각 동시에 개발할 수 있습니다.

 

저작자표시 (새창열림)

'Backend Programming' 카테고리의 다른 글

서블릿이란 무엇일까?  (0) 2024.06.30
스프링 빈과 애플리케이션 컨텍스트 그리고 AOP??  (0) 2024.06.29
스프링의 컨트롤러, 서비스, 레포지토리가 무엇인가?  (0) 2024.06.27
JDBC, JPA가 무엇이냐?  (0) 2024.06.26
데이터 베이스 테이블?  (0) 2024.06.26
'Backend Programming' 카테고리의 다른 글
  • 서블릿이란 무엇일까?
  • 스프링 빈과 애플리케이션 컨텍스트 그리고 AOP??
  • 스프링의 컨트롤러, 서비스, 레포지토리가 무엇인가?
  • JDBC, JPA가 무엇이냐?
chanheess
chanheess
'왜' 그렇게 했는가?에 대한 생각으로 공부 및 작업의 저장관리
  • chanheess
    왜 그렇게 생각했는가?
    chanheess
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Backend Programming
      • Game Programming
        • Unreal
        • DirectX
      • C++
        • Memo
        • Basic
        • Effective Modern
      • Algorithm
        • Memo
        • Baekjoon
        • Programmers
        • HackerRank, LeetCode
      • Data Structure
      • Design Pattern
      • Etc
        • Memo
        • Daily Log
        • Book
  • 최근 글

  • 최근 댓글

  • 태그

    JWT
    c++ 기초 플러스
    오블완
    dp
    Java
    프로그래머스
    dfs
    SpringSecurity
    백준
    JPA
    spring
    알고리즘
    티스토리챌린지
    위클리 챌린지
  • hELLO· Designed By정상우.v4.10.0
chanheess
MVC 패턴이란 무엇일까?
상단으로

티스토리툴바