MVC 패턴이란 무엇일까?

2024. 6. 28. 20:15·Backend Programming
목차
  1. 왜 사용하는 걸까?

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

  • 최근 댓글

  • 태그

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

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.