Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1차 세미나 서술 과제 #3

Open
chaewonni opened this issue Oct 10, 2024 · 0 comments
Open

1차 세미나 서술 과제 #3

chaewonni opened this issue Oct 10, 2024 · 0 comments
Assignees

Comments

@chaewonni
Copy link
Member

chaewonni commented Oct 10, 2024

가이드 코드 클래스간 역할에 대해 설명하고, 이렇게 역할을 분리해서 얻은 장점과 분리하는 이유에 대해 고민해보고 서술해주세요.

1. 클래스간 역할

Diary

개별 일기의 데이터를 표현하는 엔티티 클래스. DiaryServiceDiaryRepository가 일기 데이터를 다룰 때 사용.

DiaryController

일기 데이터에 대한 비즈니스 로직과 클라이언트 사이의 인터페이스 역할. 사용자의 요청 (GET, POST, PATCH, DELETE)을 처리하고, 요청에 맞는 서비스 로직 호출.
DiaryService와 상호작용하며, 일게 데이터의 조회, 생성, 수정, 삭제 요청을 전달. 또한, DiaryUI로부터 사용자의 명령을 받아 API 호출 수행.
글자수 30자 제한 같이 입력 값 검증이 이루어지는 곳이기도 함.

DiaryService

비즈니스 로직을 담당하며, DiaryController로부터 전달받은 요청에 따라 일기 데이터를 처리. 일기 데이터의 생성, 수정, 삭제, 조회 로직을 포함.
DiaryRepository와 상호작용하여 데이터의 실제 저장소 접근을 수행. DiaryController로부터의 요청을 받아 DiaryRepository와 데이터를 주고받음.
일기를 수정하거나 삭제할 때, 해당 id를 가진 일기가 실제로 존재하는지 확인 등 비즈니스 규칙 검증이 이루어지는 곳이기도 함.

DiaryRepository

데이터 저장소 역할. ConcurrentHashMap을 사용하여 일기 데이터를 메모리에 저장하고, 일기 데이터를 추가, 조회, 수정, 삭제하는 작업 수행.
DiaryService와 상호작용하여 데이터의 실제 CRUD를 처리.

Main

사용자의 인터페이스를 담당하는 클래스. DiaryController를 사용하여 사용자의 입력에 따라 일기 데이터를 처리하며, UI 상태를 관리.
DiaryController와 상호작용하여 사용자가 입력한 명령(GET, POST, PATCH, DELETE 등)을 처리하고, 그 결과를 출력

2. 역할 분리를 통한 장점

1. 관심사 분리

DiaryController는 사용자의 요청 처리, DiaryService는 비즈니스 로직을 수행, DiaryRepository는 데이터의 영속성을 관리 등 각 클래스는 특정한 관심사에만 집중할 수 있게 된다.
이로 인해 코드의 가독성이 높아지고, 클래스의 역할이 명확해져 코드 유지보수가 쉬워진다.

2. 유연성과 확장성

각각의 클래스가 독립적이기 때문에 새로운 기능 추가나 변경 시에도 다른 클래스에 영향을 덜 미친다.
예를 들어, DiaryRepository를 데이터베이스로 변경하고 싶다면, DiaryRepository만 수정하면 되고, DiaryServiceDiaryController는 그대로 사용할 수 있다.

3. 유지보수성 향상

위의 얘기와 비슷하게, 클래스 간 역할이 명확하게 분리되어 있어 코드 수정 시 영향 범위가 좁다. 특정 클래스에 변경 사항이 생겨도, 다른 클래스에 미치는 영향이 적기 때문에 유지보수성이 높아진다.

@chaewonni chaewonni self-assigned this Oct 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant