본문 바로가기
Java (국비)/Java 이론

MVC (Model-View-Controller)

by Hwanii_ 2023. 5. 23.
728x90

프로그래밍을 할 때 설계 하는 방식을 뜻한다.

 

다양한 언어를 공부해도 문법은 바뀔지언정, 프로그래밍 설계의 구조는 바뀌지 않는다.

 

Model :

 

모델은 데이터(DB)와 관련된 로직을 담당하는 파트 이다.

DB에서 데이터를 다루는 방법에 대한 코딩이 == SQL

 

(DB의 데이터를 JAVA환경으로 가져올 수 있도록 하고 반대도 마찬 가지 이다)

DB <-----> JAVA

== JDBC, DAO (Data Access Object : 데이터 접근 객체)

 

CRUD "기능"을 구현하는 파트 (사용자에게 제공할 서비스를 코딩)

CRUD를 비즈니스 메서드 (핵심 로직) 라고도 부른다.

 

JAVA에서 데이터를 "정의" 하는 코딩은 == VO (Value Object : 값 오브젝트 (Read-Only)) 이다.

 

 

 

View :

 

사용자가 보는 화면에 대한 모든것을 담당하는 파트 이다.

사용자 편의성 (UI/UX) 을 고려 한다.

유효성 검사..

사용자와의 입출력을 담당하는 파트.

 

 

 

Controller : 

 

View <-----> Model 을 연결하는 파트 이다. (총괄)

 

MVC 패턴의 핵심은 M과 V가 절대로 서로 붙어 있지 않게, 무조건 분리되어 있어야 한다.

why? 사용자가 DB에 직접적으로 접근을 하는일은 X

 

 

 

MVC의 장점

 

1. 유지보수 용이.

 

2. 모듈화를 강제해서 개발의 편의성을 도모.

예시) 레고 블록이 작고 갯수가 많을수록 다양한 output (모양)을 만들어 낸다.

 

3. 프로젝트 코드가 '낮은 결합도' 를 가진다 => 유지보수 용이.

예시 )

M의 CRUD의 input을  VO로 통일

 

4. 프로젝트 코드가 '높은 응집도'를 가진다 => 유지보수 용이.

응집도) 관련이 있는 코드들끼리 하나의 페이지에 작성하는것을 말한다.

예시) 

int 학생수 = 50;

 

for(학생수)

..

for(학생수)

..

while(학생수가 될때가지)

..

for(학생수)

 

인 코드가 있을 때,

int 학생수 = 50;으로 하지 않으면, 학생수가 변경될때마다 코드의 모든 부분을 다 수정 해야 한다.

 

 

 

정리 :

 

1. sysout()은 오직 무조건 View 에서만 작성이 가능 하다. (로그 기록이 필요할 경우, DAO 에서 하고 나중에 주석 처리..)

 

2. CRUD (DAO 메서드)는 output이 boolean 이다.

 

3. CRUD (DAO 메서드)의 이름은 고정이다. 이름은 아래와 같다.

 

1) insert

2) selectAll (getAll)

3) selectOne (getOne)

4) update

5) delete

 

만약, 더 기능을 사용해야한다 ? 메서드 "오버로딩"을 통해 해결 한다.

 

++ 23.06.04 추가

 

메서드 오버로딩을 통해 해결을 하지 않음.

기존에는 오버로딩을 통해 해결했다면, searchCondition 으로 같은 메서드의 이름이여도

조건에 따라 다른 기능을 수행 하도록 해결 한다.

why ? 높은 응집도를 위해서 이렇게 한다.

 

응집도가 높다 == 유지보수가 용이하다.

 

 

 

설계할 때 : 

 

설계를 꼼꼼히 하는것이 코드를 짜기전에 무엇보다 중요.

 

1) 변수명

 

2) 메서드명

메서드 시그니쳐, input 개수와 타입, output 타입을 고려.

 

3. 클래스 및 객체의 이름

 

4. 사용할 기능들이 뭔지 ?

 

(5. 개발기간)

반응형