You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
가이드 코드 클래스간 역할에 대해 설명하고, 이렇게 역할을 분리해서 얻은 장점과 분리하는 이유에 대해 고민해보고 서술해주세요.
클래스 간 역할에 대한 설명
Main
사용자와의 상호작용을 하는 클래스입니다.
입출력 처리를 해당 클래스에서 처리합니다.
Diary
"일기"의 도메인 클래스입니다.
각각의 일기는 고유한 id와 내용을 포함하고, id는 일기를 구별하는 기본키로 사용됩니다.
DiaryController
사용자로부터 온 요청에 대한 처리를 서비스클래스로 넘겨주고, 내부 시스템으로 받은 응답을 사용자에게 돌려줍니다.
사용자가 입력한 데이터의 유효성을 검사합니다. (ex. 일기 글자수는 30자로 제한)
DiarySerivce
비즈니스 로직 수행 책임을 담당(알맞은 정보를 가공)합니다.
사용자로 받은 일기의 id 타입변환을 하는 과정을 해당 클래스에 구현했습니다.
Repository에 구현할 경우, Service 계층은 단순히 Repository의 메소드를 호출하는 역할만 하게 됩니다.
이는 Service가 Repository의 구체적인 구현에 직접 의존하여 강한 결합이 발생합니다. 따라서 해당 과정을 Service에 구현했습니다.
DiaryRepository
DB 관리(연결, 해제, 자원 관리)를 담당합니다.
서비스 클래스로부터 받은 id 값이 존재하는지를 확인하고 없을 경우, 예외를 반환합니다.
역할을 분리해서 얻은 장점과 분리하는 이유
객체지향 프로그래밍이 가능해집니다.
왜 ? --> 각 계층별(Controller, Service, Repository 등)로 나누어서 코드를 작성하므로 !!
각 계층이 명확한 책임을 가지므로, 코드의 가독성이 높아집니다.
유지보수에 유용 (리팩토링 할 경우)
코드를 수정할 경우 특정 계층이 변경되더라도 다른 계층에 미치는 영향을 최소화하므로 코드를 수정할때도 간편하게 수정할 수 있습니다.
뿐만 아니라 중복되는 코드를 줄이므로 코드가 간결해집니다. 새로운 기능을 추가할 때도, 기존 기능을 변경하지 않고 기능을 추가할 수 있습니다.
따라서 역할을 분리할 경우, 코드의 가독성이 올라가 함께 협업하기 쉬워지며 유지보수, 새로운 기능추가도 더 쉽게 할 수 있기 때문에 클래스 간의 역할을 분리합니다.
The text was updated successfully, but these errors were encountered:
ToDo
클래스 간 역할에 대한 설명
Main
Diary
DiaryController
DiarySerivce
Repository에 구현할 경우, Service 계층은 단순히 Repository의 메소드를 호출하는 역할만 하게 됩니다.
이는 Service가 Repository의 구체적인 구현에 직접 의존하여 강한 결합이 발생합니다. 따라서 해당 과정을 Service에 구현했습니다.
DiaryRepository
역할을 분리해서 얻은 장점과 분리하는 이유
왜 ? --> 각 계층별(Controller, Service, Repository 등)로 나누어서 코드를 작성하므로 !!
각 계층이 명확한 책임을 가지므로, 코드의 가독성이 높아집니다.
코드를 수정할 경우 특정 계층이 변경되더라도 다른 계층에 미치는 영향을 최소화하므로 코드를 수정할때도 간편하게 수정할 수 있습니다.
뿐만 아니라 중복되는 코드를 줄이므로 코드가 간결해집니다. 새로운 기능을 추가할 때도, 기존 기능을 변경하지 않고 기능을 추가할 수 있습니다.
따라서 역할을 분리할 경우, 코드의 가독성이 올라가 함께 협업하기 쉬워지며 유지보수, 새로운 기능추가도 더 쉽게 할 수 있기 때문에 클래스 간의 역할을 분리합니다.
The text was updated successfully, but these errors were encountered: