2023-12-22(12일차) - 명언앱 만들기, 클래스들 기능설명, Service 클래스 & Repository 클래스 도입

·2023년 12월 23일

📅 2023-12-22, 12일차

이클립스 단축키

Ctrl + H 파일검색

명언앱 클래스별 역할 서술

Main 클래스

  • 실행하는애
    프로그램 시작 하면 다른 클래스내부에 있는 함수를 실행?할 수 있게 명령하는애??
    Main클래스에서 App클래스 run 함수를 실행

App 클래스

  • 명령어 입력받고 프로그램에 있는 기능들을 제공해주는애.
    어디로 안내할지 길안내 역할을 한다.

rq 클래스

  • 여러 클래스들의 요청을 받아드리고 요청에 맞는 처리를 해서 돌려줌
    하청업체 같은 너낌

    예) 삭제명령어를 입력 했을때 사용되는 애
    명령어가 제대로 입력 됐는지 체크 하라고 시켰으니까
    그거에 대한 결과값을 돌려준다
    삭제 명령어를 입력했을 때 rq 생성자를 호출함

WiseSayingController 클래스

  • 해당 프로그램의 찐기능 저장소.
    실질적으로 사용자가 뭔가를 데이터를 넣었을때
    어떻게 사용자한테 보여지는지도 여기서 결정 되는듯하다.
    데이터를 저장하고 꺼내서 사용 할 수 있게 함

WiseSaying 클래스

  • WiseSayingController에서 조립 한 데이터를 어떤 모양으로 조립할지 정해줌
    조립된 데이터를 WiseSayingController에서 다시 꺼내와서 저장 할 수 있음

👏 강사님의 서술 :

App : 라우팅, 고객이 올바른 컨트롤러를 만나도록 교통정리

Controller : 본인이 맡은 주제와 관련된 고객의 요구사항을 듣고, 처리 후 응답처리를 할 때, 본인이 판단하지 못하는 것은 서비스에 물어보는게 원칙식당에서 점원의 역할이라고 보면 된다. 고객을 만나서, 그들의 요청을 받고 처리해준다.

Service : 핵심로직을 담당한다. 서비스는 오직 컨트롤러의 요청에 의해서만 일을 한다. 식당에서 메인 요리사의 역할이라고 보면 된다.

Repository : 데이터의 저장/조회를 담당한다.리포지터리는 오직 서비스의 요청에 의해서만 일을 한다.식당에서 재료담당 요리사의 역할이라고 보면 된다.

DB : 데이터의 영속저장/조회를 담당한다. 보통 외부 프로그램으로 작동한다. 즉 개발자가 DB 프로그램을 구현하는 일은 없다. 이미 구현되어 있다. 주로 MySQL, Oracle 과 같은 제품이 많이 사용된다. 식당에서 재료창고 관리자의 역할이라고 보면 된다. DB는 오직 리포지터리의 요청에 의해서만 일을 한다.

모듈

모듈간의 응집도는 높을 수록 좋고 ↑

  • WiseSaying모듈안에 WiseSaying기능들만 모여있어야 한다. 기능들이 여기저기 퍼져있으면 안좋다.

모듈간의 결합도는 낮을 수록 좋다 ↓

  • 모듈간에 통신을 하는데, 통신 수단이 왔다갔다 많으면 결합도가 높다는 거다

명언앱, Serivce 클래스 도입

  • 컨트롤러가 요청하면 실제로 일을 하는 애들이다
  • controller 클래스에서 처리하던 일들을 코드 이관을 통해 service 크래스로 옮겨 업무분담을 해준다

식당과 구청을 상상해보자!
고객의 요청을 핸들링을 하는게 프론트, 그 영역엔 컨트롤러가 있음(고객응대)
컨트롤러가 응대를 받고 핵심적인 일을 하는 서비스

명언앱에서 Controller보다는 Service에서 하는게 더 나은 기능들:

  • 실제 저장하고 생성하는 기능
  • 데이터 찾아오는 기능
  • 쓰는기능
  • 삭제기능
  • 수정
  • etc...

💡Service 클래스에서 일을 하고 그 처리내용을 Controller 클래스한테 돌려주려면,
Service 클래스에있는 메서드를 void에서 return 타입으로 바꿔주고
Controller 클래스한테 return해주면 됨.

명언앱, Repository 클래스 도입

  • 재료 창고, 저장소 느낌!
  • Controller에서 Service로 이관 된 데이터들을 다시 한번 Repository 클래스에 이관시켜줌으로써 저장 된 데이터나 리스트 가져오기 등등 할수 있게 한다.

🗯️ 12일차.. 리팩토링 하는 과정이 아직은 많이 어렵다..🤯 코드분석 많이 해보기!

profile
hello world

0개의 댓글