MVC(Model-View-Controller) 패턴
- 애플리케이션의 구조를 세 가지 주요 구성 요소로 나누어 관심사를 분리
- 세 가지 주요 구성 요소: 모델, 뷰, 컨트롤러
- 유지보수성과 확장성, 재사용성을 높임
MVC 패턴의 흐름
- 사용자 입력
- 컨트롤러 처리 : 입력 처리, 모델에 대한 변경 수행
- 모델 업데이트 : 데이터베이스와 상호작용
- 뷰 업데이트
주요 구성 요소
모델(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 클래스로부터 파라미터가 없는 요청처리부터 메소드 분리
- 파라미터 없는 요청처리 분리