Ctrl + H 파일검색
여러 클래스들의 요청을 받아드리고 요청에 맞는 처리를 해서 돌려줌
하청업체 같은 너낌
예) 삭제명령어를 입력 했을때 사용되는 애
명령어가 제대로 입력 됐는지 체크 하라고 시켰으니까
그거에 대한 결과값을 돌려준다
삭제 명령어를 입력했을 때 rq 생성자를 호출함
App : 라우팅, 고객이 올바른 컨트롤러를 만나도록 교통정리
Controller : 본인이 맡은 주제와 관련된 고객의 요구사항을 듣고, 처리 후 응답처리를 할 때, 본인이 판단하지 못하는 것은 서비스에 물어보는게 원칙식당에서 점원의 역할이라고 보면 된다. 고객을 만나서, 그들의 요청을 받고 처리해준다.
Service : 핵심로직을 담당한다. 서비스는 오직 컨트롤러의 요청에 의해서만 일을 한다. 식당에서 메인 요리사의 역할이라고 보면 된다.
Repository : 데이터의 저장/조회를 담당한다.리포지터리는 오직 서비스의 요청에 의해서만 일을 한다.식당에서 재료담당 요리사의 역할이라고 보면 된다.
DB : 데이터의 영속저장/조회를 담당한다. 보통 외부 프로그램으로 작동한다. 즉 개발자가 DB 프로그램을 구현하는 일은 없다. 이미 구현되어 있다. 주로 MySQL, Oracle 과 같은 제품이 많이 사용된다. 식당에서 재료창고 관리자의 역할이라고 보면 된다. DB는 오직 리포지터리의 요청에 의해서만 일을 한다.
모듈간의 응집도는 높을 수록 좋고 ↑
모듈간의 결합도는 낮을 수록 좋다 ↓
식당과 구청을 상상해보자!
고객의 요청을 핸들링을 하는게 프론트, 그 영역엔 컨트롤러가 있음(고객응대)
컨트롤러가 응대를 받고 핵심적인 일을 하는 서비스
명언앱에서 Controller보다는 Service에서 하는게 더 나은 기능들:
💡Service 클래스에서 일을 하고 그 처리내용을 Controller 클래스한테 돌려주려면,
Service 클래스에있는 메서드를 void에서 return 타입으로 바꿔주고
Controller 클래스한테 return해주면 됨.
🗯️ 12일차.. 리팩토링 하는 과정이 아직은 많이 어렵다..🤯 코드분석 많이 해보기!