javaboiii의 JAVA/JAVA 기초

JAVA - MVC패턴 feat.결합도, 응집도

javaboiii 2024. 7. 16. 22:11

JAVA

MVC(Model, View, Controller)

MVC패턴은 디자인 패턴중 하나이며 Model, view, Controller의 약자 입니다.

 

코드는 크게 두가지로 분류 할 수 있습니다.

1. 사용자와 닿아 있는 부분 == 프론트엔드  == view(데이터를 조금 다룰 수 있음)

2. 프로그램에서 기능을 수행하는 부분 == 백, 서버, DB

프로그램에서 기능을 수행하는 부분도 2가지로 나눌 수 있는데

1) DB & DBMS(MySQL, 오라클등..) == Model

2) 서비스, Controller, 비즈니스 layer(단, 메서드) == Controller

 

M V C 패턴으로 코드를 작성하면

유지보수 용이

보통 View에서 유효성 검사를 하기 때문에 View가 조금이라도 이상하면

백단으로 넘어가지 않게 할 수 있음

 

Client는 사용자가 프로그램을 이용할 공간

Service는 실직적으로 동작을 수행하는 공간

View는 사용자와 닿아 있는 부분

 

new 줄이기는 Spring 프레임워크 핵심이며 싱글톤 패턴 맞추기라고 할 수 있음

 

=========== 정리 ===========

M V C로 나누어 코딩을 하는게 정석이며

MC는 서비스, 서버, 백단

V는 프론트, 입출력 담당, 콘솔창에 뭔가 보이는건 전부 view = syso, 스캐너는 view에만 존재

C는 스스로 코드를 만들지 않고 V와 M에서 가져다 조합함

M은 DTO 데이터 자체를 의미

DAO는 CRUD가 존재, 배열리스트 데이터들을 담는 공간

 

★★★굉장히 중요 ★★★

결합도 : 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미한다.

결합도가 낮은 코드

코드가 조각조각 분리가 잘되어있음
== 모듈화(컴포넌트화, 함수화)가 잘되어있다
겹치는 부분이 적다.
1개의 변경사항이 발생했을 때 코드 1곳만 변경하면 된다는 것을 의미
ex) 하드코딩 제거하기, 키워드 설정, 변수화(상수화) ...

샌드위치(토마토)
햄버거(토마토)
샐러드(토마토) 냉장보관   토마토가 상했을때
--------------------------------
재료끼리 보관 토마토만 버리면 됨

 

응집도 : 응집도는 정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미합니다.

응집도가 높은 코드

하나의 코드 영역(블록, 파일)에 하나의 로직만 담겨있다
하나의 로직이 여기저기에 퍼져있으면 XX
조회수 증가, 내용 변경, 제목 변경 --->> UPDATE() 한곳에서 관리

옷장문을 열었는데,
우산이랑 ,,, 신발,,, 양발,,, 핸드백,,, 옷

신발장 -> 신발
행거에 -> 옷

 

결합도는 낮추고 응집도는 높임으로써 유지보수가 용이

 

오버로딩하면 응집도가 낮아짐

 

== CRUD의

Insert

Update

Delete

SelectOne

SelectAll

== 

 

다섯개의 메서드만 사용해서 DAO 작성 == 모든 인자를 DTO로 통일 == 응집도 ▲

 

DAO(Data Access Object)

DB의 data에 접근하기 위한 객체

DB에 접근하여 data 삽입, 삭제, 조회, 등의 기능을 수행

 

DTO(Data Transfer Object)

DTO는 계층 간(Controller, View, Business Layer) 데이터 교환을 위한 클래스

데이터 자체

 

 

호호^^

!결합도는 낮추고 응집도는 높이자!