Language/JAVA

[JAVA 기초 이론] MVC패턴

오류나면꽥꽥 2023. 5. 24. 13:02

MVC

 

  • MVC 템플릿을 제공하는 Spring 프레임워크

 

 

 

 

 

📌 MVC의 장점

 

  1. 유지보수 용이

  2. 모듈화를 강제해서 개발의 편의성 도모
    ex) 레고-블록이 작을수록 다양한 output

  3. 프로젝트 코드가 '낮은 결합도'를 가짐

  4. 프로젝트 코드가 '높은 응집도'를 가짐

 

 

 

M V C
Model View Controller
데이터(DB)와 연결 사용자가 보는 화면 V ↔ M 을 연결하는 파트

 

 

✅ M ---- Model (모델)

: 데이터(DB)와 관련된 로직을 담당하는 파트

 

  1. DB에서 데이터를 다루는 방법에 대한 코딩 == SQL
  2. DB의 데이터 <---> JAVA 환경 == JDBC, DAO
    CRUD 기능을 구현하는 파트(사용자에 제공할 서비스를 코딩)

 

 

 

 

✅  V ---- View (뷰)

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

 

  • 사용자 편의성 (UX/UI) 고려
  • 유효성 검사
  • 사용자와의 입출력을 담당하는 파트

 

 

 

 

✅  C ---- Controller (컨트롤러)

: V <---> M 을 연결하는 파트

 

✨MVC 패턴의 핵심

  1. M과 V가 절대 서로 딱! 붙어있지 않게 하는 것 ---> 무조건! 분리되어있어야함!!
  2. 사용자가 DB에 직접접근 하는 일 XXX

 

 

ex)

학생부 프로그램

 

  1. 사용자가 ON
  2. V가 "어떤 메뉴를 이용할래?"
    사용자가 "학생목록출력" 입력

    V가 C한테              "C야 사용자가 학생목록출력 이용한대~"
    C는 M한테가서,      M아, 학생목록 데이터 좀 줄래?
    M은 DB에서            학생목록 데이터 받아옴
    M이 C한테              받아온 학생목록 데이터를 다시 줌
    C는 V한테가서,       "V야, 여기 너가 찾던 학생목록 데이터~"

  3. V는 사용자(console)에게 학생목록 데이터 출력해줌

📍 주의)  한글 코딩 시 V와 M은 같은 라인에 넣으면 안 됨!

 

 

👏 설계를 꼼꼼히 하는 것이 무엇보다 중요

1) 변수명
2) 메서드명
           메서드 시그니처
           input 개수와 타입
           output 타입
3) 클래스 및 객체 이름들
4) 사용할 기능
5) 개발기간

 

 

 

📍 주의사항

  1. syso()는 오직 view에서만 사용가능

  2. CRUD ( DAO메서드)  input은 생성자 클래스명 변수명으로 통일!
    public boolean insert(DrinkVO vo) {
    	// 목록을 출력하는 경우 output을 사용한 배열로 이용
    }
    
     public ArrayList<DrinkVO> selectAll(DrinkVO vo) {
     	// 배열에 저장된 데이터를 사용하기 때문에
     }​
     
  3. CRUD ( DAO메서드)  output은 boolean로 고정!

  4. CRUD ( DAO메서드)  메서드명은
insert
selectAll ( getAll )
selectOne ( getOne )
update
delete