The Debugging Chronicles : "코드의 미학"
MVC 패턴 본문
- 웹개발의 분류
프론트엔드 : 사용자와 닿아있는 부분 (데이터를 조금 다룰 수 있다. DB에 영향 x)
백엔드(백단), 서버, DB : 프로그램에서 기능을 수행하는 부분
1) DB & DBMS(MySQL, 오라클, ...)
2) 서비스, Controller, 비즈니스 단
> MVC에 해당하는 부분
- MVC (Model View Controller)
- 모델(Model), 뷰(View), 컨트롤러(Controller) 세 구성요소를 이용하여 소프트웨어를 설계하는 방식을 말한다.
- 모델, 뷰, 컨트롤러는 기능적으로 분리되어있어서 여러명의 개발자가 동시에 개발이 가능하다.
- 일부 기능이 추가될 경우에도 기존의 구성요소의 재사용이 가능하다.
- MVC 패턴으로 코드를 작성하면 유지보수에 용이하다. ★
client : 사용자가 프로그램을 이용(상호작용)하는 공간, 컨트롤러를 호출한다.
service(M : 모델) : 실질적인 동작을 수행하는 공간이다.
(C : 컨트롤러) : MVC 패턴에서 중앙 처리 담당부분이다.(M과 V로 이루어진 프로그램)
view(V : 뷰) : 사용자와 닿아있는 공간이다. (print와 input 프로그램들)
관계도
(그리기)
1. 사용자는 컨트롤러를 통해 입력값을 전달(view) 하거나 필요한 기능(model)을 호출한다.
2. 사용자의 요청이 특정 기능(CRUD)을 요구하는 것이라면, 모델을 호출하여 해당 기능을 수행하는 함수를 작동시키고 결과값을 반환 받는다. (예를 들어 selectOne과 selectOne에서 반환하는 data하나만)
3. 모델에서 반환 값이 있거나 사용자에게 입력 받아야하는 값이 있을 때, view에게 model이 처리한 값을 전달하거나 값을 입력받는 함수를 호출한다.
4. 컨트롤러로부터 전달 받은 값을 사용자에게 출력하거나 입력 을 요구하는 함수를 출력한다.
View
- 사용자 인터페이스 부분을 나타내며, 사용자에게 보여지는 출력 부분과 값을 받는 입력 부분으로 이루어져 있다.
(Scanner, print는 여기에만 담당)
- view는 오직 보여주기 위한 곳으로 기능을 동작시키기 위한 공간이 아니다.
- view에서 입력값을 받기 때문에 유효성 검사도 이곳에서 실행된다.
- 공통적으로 사용하는 new를 사용하는 변수, 객체들은 static을 붙여 한 번만 선언하도록 한다.
(new를 줄일수록 좋음)
- view의 함수들은 출력 부분은 모두 void, 입력 부분은 return 값을 가지고 있다.
- 함수를 만들 때 모르는 것은 모두 인자로 받는다.
▶ Service 부분을 Model와 Controller로 나누어 작성된다.
Model
- 비즈니스 로직(기능)을 담당하는 부분이다.
- 데이터를 저장하고, CRUD에 해당하는 모든 작업(기능)을 수행하는 부분이다.
CRUD의 기능을 수행하기 때문에 insert(), update(), delete(), selectOne(), seletAll() 이외의 함수는 만들면 안 된다.
- CRUD와 관련된 행동은 무조건 Model의 해당 메소드를 통해서만 진행되어야 한다.
- DTO와 DAO로 나뉘며, 해당 클래스들의 이름 뒤에 붙어 구별된다.
DTO : 데이터 그 자체를 말한다. (사용되는 객체가 정의되는 공간)
DAO : 데이터(객체)들을 담는 공간이다. (배열 리스트)
CRUD는 모두 이곳에 생성한다. (기능 실행 함수들)
insert(), update(), delete(), selectOne(), selectAll() 5개의 함수만 생성해야 한다.
Controller
- 전체적인 프로그램이 실행되는 부분으로, 사용자가 프로그램을 이용하는 공간이다.
- View와 Model의 조합만 (View, Model에서 함수를 가져와서) 사용자가 실행할 수 있도록 한다.
사용자의 입력을 받아 Model에게 전달하거나, Model에서 연산된 결과를 View에 전달하는 역할을 한다.
- 클라이언트의 요청을 수신하고, 이를 Model과 View에 적절한 작업을 요청하는 작업을 한다.
- Model에서 수행하지 않는 특정 이벤트(요구사항)를 처리하고, 모델이나 뷰에게 작업 결과를 전달하는 역할을 한다.
Client
- MVC 패턴에서 사용자가 상호작용하는 부분을 말한다.
- 사용자는 클라이언트를 통해 Controller로 명령을 내리고, 데이터를 입력, 출력 받는다.
MVC 패턴 설계
- MVC 패턴은 병렬 개발이 가능한 독립적인 설계방법이기 때문에 설계 순서는 전혀 상관없다.
- MVC 각자 자신의 파트에 해당하는 부분만 구현하도록 해야한다.
1. view
1) 출력과 입력 부분을 나눠서 사용자에게 어떤 것(기능)을 출력할 것인지 작성(정의)한다.
2) 메서드 시그니처를 작성한다.
3) view에서 모르는 값은 인수값으로 지정한다.
2. service
1) 기능의 정의
2) 속성의 종류와 갯수 생각
3) 달라지는 것을 찾음
4) 메서드 구현
※ 모델과 컨트롤러의 역할을 구분해야 된다.