티스토리 뷰
MVC
MVC란 Model View Controller의 약자로 애플리케이션을 세 가지의 역할로 구분한 디자인패턴
세 영역을 구분함으로써 결합도를 최소화한 패턴
* 디자인패턴 : 소프트웨어의 개발 방법을 공식화 한 것. 개발자들 간의 커뮤니케이션의 효율성을 높이는 기법 예) 싱글톤 패턴, 팩토리 패턴, 옵저버 패턴 등...
- Model : 백그라운드에서 동작하는 로직을 처리
데이터를 담거나(dto) 데이터베이스로 데이터를 보내는 작업(dao)을 수행
* DTO (Data Transfer Object), VO (Value Object)
: 데이터 전달을 위한 목적으로 생성된 객체로서, View에서 출력할 수 있는 최종 데이터를 전달
예) Car Class(Mode)에서 속도를 계산하고(로직을 통해 데이터 연산), CarDto Class(DTO)에서 속도에 대한 데이터를 저장하여 View에 전달
--> Car class(Model)은 외부에 노출되지 않음(캡슐화)
: DTO를 사용하면 Model과 중복적인 코드가 존재 가능
예) Car(Model)에서 속도 연산을 위해 속도 관련 데이터가 있고, CarDto(DTO)에서도 View에서 속도를 출력하기 위한 속도 관련 데이터를 가질수 있음
: DTO는 접미사 Dto를 이용해서 다른 클래스와 구분 필요 (Tip : IntelliJ Tool에서는 cmd + n 을 이용해서 생성자 및 getter/setter 생성가능)
: DTO와 VO는 동일한 개념이지만, VO는 오직 read only! DTO는 로직을 갖고 있지 않는 데이터 객체이며, 데이터에 접근하기 위한 getter/setter 메소드만 보유
* DAO (Data Access Object)
: DB를 사용해 데이터를 조화하거나 조작하는 기능을 전담하도록 만든 객체를 의미. 단순히 읽기만 하는 연산이므로 트랜잭션 간의 오버헤드 감소
- View : 사용자가 보게 될 결과 화면을 출력. View에서의 사용자의 입력/행동을 Controller에 전달
- Controller : 사용자의 입력처리와 흐름 제어를 담당
'코드 리팩토링' 카테고리의 다른 글
Lotto 구현 Step1 - 불필요한 인스턴스 변수, 생성자 제거 (0) | 2018.10.24 |
---|---|
IF-ELSE 제거 - enum type (0) | 2018.10.22 |
IF ELSE 제거 - Class.forName() & 인터페이스 다형성 (1) | 2018.10.15 |
static mehtod 구현? vs intstance method 구현? (0) | 2018.09.17 |
Java Code Convention (0) | 2018.09.16 |