yongsa0221의 고물상
DIP과 추가 수정사항들… 본문
리팩터링 하며 패키지 구조와 역할분리를 조금 더 확실하게 하려고 하였다.
중점사항은..
도메인은 그 누구에게도 의존적이지 않아야 한다
메인의 다른 계층에 의존적이지 않게 하기 위해 infrastructure 계층을 인터페이스를 통해 사용하는 **의존성 역전(Dependency Inversion)**을 구현하였다. 이를 통해 도메인 계층은 구체적인 구현(infrastructure)에 의존하지 않고 추상화된 인터페이스에 의존하게 되어 저수준 모듈(ai관련 호출 로직)이 고수준 모듈의 구현(contextAndQuestionGenerator)에 의존하게 된다.
추가로 Adapter패턴을 사용하여 adpater에서 도메인 로직에서 사용되는 BookToProgress라는 녀석과 aiApi 호출을 위한 dto녀석간의 변환 로직 및 검증을 담당하게 했다.
또한 modelBehavior라고 전략패턴을 통해 실질적으로 외부와 http통신하는 녀석의 이름을 바꾸고 조금 수정했는데, 반환 타입을 사용자 지정 객체에서 String타입으로 변경하였다.
AiModelBehavior → AiApiClient
로 변경했다.
그이유는…. 응답 param중 content:String 에서 json형식에 맞게 응답하라는 요청을 하고, content에서 받은 string을 요청했던 형식으로 파싱해서 반환하는 로직이었는데, 원하는 형식으로 응답이 왔는지 검증하는 역할은 더 높은 수준에서 이루어져야 된다고 생각해서 그렇게 바꿨다.
대충 구조를 잡았느니 계속 하는중,,,,
https://github.com/gzcxadfzc/BE
'프로젝트 > 리팩터링' 카테고리의 다른 글
little-writer-v2 threadpool 설정하기 2 (1) | 2024.10.04 |
---|---|
little-writer-v2 thread pool 설정하기 (2) | 2024.10.03 |
little-writer-v2 ai의존성 분리 (0) | 2024.09.20 |
little-writer-v2 전략패턴 사용하기 (0) | 2024.09.20 |
little-writer-v2 시작하기 (1) | 2024.09.20 |