풀스택 자바 - 20240821

김진아·2024년 8월 21일
0

MVC(Model-View-Controller) 패턴


  • 애플리케이션의 구조를 세 가지 주요 구성 요소로 나누어 관심사를 분리
    • 세 가지 주요 구성 요소: 모델, 뷰, 컨트롤러
  • 유지보수성과 확장성, 재사용성을 높임

MVC 패턴의 흐름

  1. 사용자 입력
  2. 컨트롤러 처리 : 입력 처리, 모델에 대한 변경 수행
  3. 모델 업데이트 : 데이터베이스와 상호작용
  4. 뷰 업데이트

주요 구성 요소

모델(Model)

  • 역할
    • 애플리케이션의 데이터와 비즈니스 로직 처리
    • 데이터의 상태 유지, 데이터베이스와 상호작용
    • 비즈니스 규칙을 적용하는 책임을 지님
  • 구성
    • 데이터 객체와 데이터 처리 로직으로 구성
  • 예시
    • 사용자의 정보, 상품의 세부 사항, 주문 처리 로직 등을 포함하는 클래스

뷰(View)

  • 역할
    • 사용자에게 정보를 시각적으로 표시하는 역할
    • 데이터의 표현 방식을 정의
    • 사용자 인터페이스(UI)를 구성
  • 구성
    • HTML. JSP, Thymeleaf 템플릿, 또는 다른 템플릿 언어를 사용하여 데이터를 표시
  • 예시
    • 사용자 프로필을 보여주는 웹 페이지, 상품 목록을 나열하는 페이지

컨트롤러(Controller)

  • 사용자로부터 입력을 처리, 사용자의 행동에 따른 로직을 구축
  • 비즈니스 로직을 호출하여 모델을 업데이트
  • 뷰를 선택하고 데이터를 전달
  • 요청과 응답 사이의 중개 역할
  • 예시
    • 사용자가 로그인 요청을 보낼 때 컨트롤러는 사용자 인증을 처리하고 성공적인 경우에는 대시보드 페이지를 반환

개인적 주의사항

  • 지금 내가 진행하고 있는 건 뷰(view)가 콘솔 프로그램이다. 콘솔 프로그램의 특성 상 Controller에 View 로직이 섞여있다.



각 클래스별 역할


App

  • 애플리케이션의 진입점을 정의하거나 전반적인 설정과 초기화를 담당
  • 경우에 따라 사용되는 역할들
    • 콘솔 애플리케이션: 'main' 메소드를 통해 애플리케이션 실행
    • 웹 애플리케이션: 애플리케이션의 초기화 및 설정
    • GUI 애플리케이션: 사용자 인터페이스의 초기화 및 설정
    • 모듈화 및 구성: 애플리케이션 구성 요소의 관리 및 설정

Controller

  • 주로 웹 애플리케이션의 MVC 패턴에서 사용됨
  • 애플리케이션의 흐름과 로직을 관리하는 중요한 역할
  • 사용자의 요청을 처리
  • 비즈니스 로직을 실행
  • 적절한 뷰를 선택하고, 모델과 뷰 간의 상호작용을 조율

Service

  • 자바의 객체 지향 프로그래밍 및 애플리케이션 디자인에서 중요한 역할을 하는 클래스
  • 주로 비즈니스 로직을 처리
  • 애플리케이션의 기능과 동작을 정의
  • 데이터베이스와의 상호작용, 계산, 비즈니스 규칙 적용

Repository

  • 데이터베이스와 상호작용하여 데이터를 조회하거나 저장
  • 비즈니스 로직과 데이터베이스 간의 중개 역할
  • CRUD 연산을 추상화

DB

  • 애플리케이션에서 데이터베이스와의 상호작용을 관리
  • 데이터베이스 연결 설정, SQL쿼리 실행, 데이터베이스 상태를 관리




깃 예전브랜치에 접근하여 커밋하기

  • 다른 방법도 있겠지만 일단 내가 할 수 있는 방법을 기록해본다.
  $ git pull origin 예전브랜치
  $ git 
  




앱 게시판 수정단계까지 완료한 프로젝트 리팩토링 하기


앱 게시판 8단계 리팩토링 전 - 소스코드

리팩토링 1단계

  • Scanner 클래스로 분리해서 어느 파일이든 스캐너 새로 생성하지 않고 같은 스캐너 사용하기
  • 스캐너 독립

리팩토링 2단계

  • Article 객체를 컨트롤하는 컨트롤러 클래스 생성
  • 클라이언트 요청 처리 클래스
  • App 클래스로부터 파라미터가 없는 요청처리부터 메소드 분리
  • 파라미터 없는 요청처리 분리
profile
https://develop-chick.tistory.com/ 첫번째 블로그

0개의 댓글