개발자
안녕하세요 현재 학부생 3학년으로 spring 사용해서 프로젝트를 진행하다가 질문이 생겨 글 올립니다. 제 프로젝트의 구조 일부를 먼저 설명 드리면 노트 도메인과 멤버 도메인이 존재하고 각 도메인의 레포지토리에 어댑터 패턴을 적용해서 진행하고 있습니다. 그런데 각 서비스에서, 예를 들어 노트 서비스에서 멤버 어뎁터를 참조하고 멤버 서비스에서 노트 어뎁터를 참조하고 있는 상황입니다. 이런 상황이라 역의존성이 존재하는 상황이고 결합도에 문제가 있는것 같아 파사드 패턴을 사용해야 하나 고민중에 있습니다. 그런데 파사드 패턴을 사용하게 될 경우 연관있는 도메인을 묶는 파사드 클래스가 너무 많이 생기게 될 수 있을것 같다는 우려가 있고 결합도 감소에 크게 유의미한가에 대한 고민이 있습니다. 이런 상황에서 아래와 같은 질문이 있습니다. 1. 제가 쳐해있는 상황에서 파사드 패턴이 제 고민의 해결 책이 될 수 있을지 2. 실무에서 도메인과 연관관계를 해결하기 위해 파사드 패탄을 사용하는지 3. 파사드 패턴 말고도 도메인의 역의존성 혹은 복잡한 연관관계를 해결하기 위한 방법이 있는지
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 11월 07일
안녕하세요, 당신의 질문에 대해 아래와 같이 답변드립니다. 1. 파사드 패턴은 복잡한 서브시스템에 대한 간편하고 제한된 인터페이스를 제공하는 구조적 디자인 패턴입니다. 여러분의 상황에서는 두 도메인 간의 연결을 추상화하여 역의존성 문제를 해결하는데 도움이 될 수 있습니다. 그러나 전체 시스템 복잡성을 고려할 때 이런 접근 방식이 반드시 최선일 필요는 없습니다. 2. 실무에서 파사드 패턴은 흔히 사용됩니다. 각 도메인 로직에 대한 단일 진입점을 제공하여 유지보수, 확장성, 가독성 등에서 이점이 있기 때문입니다. 그러나 이는 평가 기준에 따라 다르며, 모든 상황에 적합하지 않을 수 있습니다. 3. 파사드 패턴 외에도 연관관계 및 역의존성 문제를 해결하기 위한 다양한 방법들이 있습니다: - **적당한 계층화**: 코드를 적절하게 계층화함으로써 의존성과 복잡도를 관리할 수 있습니다. 데이터 접근, 비즈니스 로직, 사용자 인터페이스 등의 별도 계층을 생성하면 각 계층별로 의존성을 관리하는 데 도움이 됩니다. - **DTO(Data Transfer Object)**: 서비스 간 데이터 교환을 위해 DTO를 사용하면 시스템 전반의 결합도를 줄일 수 있습니다. - **Dependency Injection (DI)**: 객체가 필요로 하는 의존성을 외부에서 주입하는 방식으로, 코드의 결합도를 낮추는데 도움이 됩니다. - **Mediator Pattern**: 중개자 패턴은 '객체들 사이의 상호작용을 캡슐화하여 객체들이 직접 참조하지 않도록 함'으로써 복잡한 연관 관계나 역의존성 문제를 해결하는 방법입니다. 상황에 따라 선택해야 하는 패턴과 접근법이 다르므로, 여러분의 프로젝트 요구사항 및 기대 결과에 가장 적합한 방법을 선택하시기 바랍니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!