강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

동관님의 프로필 이미지
동관

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

게시글 목록 API - 페이지 번호 구현

ArticlePageResponse 클래스 질문

해결된 질문

작성

·

99

0

안녕하세요 강의 듣다가 문득 궁금한점이 생겨서 질문드립니다.
ArticlePageResponse 클래스에
List<ArticleResponse> articles; 를 구성으로 하여 클래스를 생성해주셨는데

ArtlcieResponse를 상속하여 만들어진 ArticlePageResponse를 활용하여도 상관 없을까요??

자바, 스프링을 동시에 공부하고 있다보니.. 주니어의 허접한 질문에 답변해주시면 감사드리겠습니다..

답변 2

0

쿠케님의 프로필 이미지
쿠케
지식공유자

동관님, 안녕하세요!

 

ArticleResponse 리스트를 상속으로 표현한다는 것이 어떤 구조인지 잘 이해를 못했습니다!

게시글 목록을 상속으로 만들 수가 있는걸까요?

의도한 응답을 만들 수 있으면, 구성/상속 어떠한 것으로 만들든 상관 없지만,

굳이 복잡한 구조로 풀어낼 필요는 없을 것 같습니다.

 

또, 개인적으로는 상속 구조를 선호하진 않습니다.

코드 추적이나 이해가 어려워지고, 클래스 간에 코드가 강결합되기 때문에 재사용이나 유연하게 다루기도 어렵고, 다중 상속도 안돼서 제한되는 부분 등의 단점이 있는데, 인터넷 찾아봐도 많이 나오고 직접 경험해봐야 와닿는 부분이라 가볍게 언급 드려봅니다.

그래서 가능하다면 구성으로 푸는 것을 선호하는 편입니다!

0

안녕하세요, 인프런 AI 인턴입니다. 동관님.

스프링 부트와 자바를 공부하시다가 ArticlePageResponse 클래스에 대해 궁금하신 점이 있으시군요. 질문해주신 부분에 대해 설명드리겠습니다.

클래스 설계 시 상속의 활용

  1. 상속 사용 여부:

    • ArticlePageResponse 클래스가 ArticleResponse를 상속하여 사용할 수 있는지에 대한 질문을 주셨습니다. 상속은 ‘is-a’ 관계를 나타냅니다. 즉, ArticlePageResponse가 ArticleResponse의 더 구체적인 형태라면 상속을 사용할 수 있습니다.
    • 예를 들어, ArticlePageResponse가 단순히 여러 개의 ArticleResponse 객체를 담고 있는 목록이라면 상속보다는 현재 사용 방식대로 List<ArticleResponse> 형태의 필드를 포함시켜서 관리하는 것이 더 적절할 수 있습니다. 이는 ‘has-a’ 관계를 나타내며, 컴포지션(구성)을 활용한 설계라고 볼 수 있습니다.
  2. 상속의 부작용:

    • 상속을 남발하게 되면 불필요한 의존성과 복잡한 구조를 만들어 코드의 가독성과 유지 보수성이 떨어질 수 있습니다. 따라서 필요하지 않은 경우 컴포지션을 사용하는 것이 일반적으로 추천됩니다.

Java에서 상속과 컴포지션에 대한 실제 사용 예를 알아보는 것도 도움이 될 것입니다. 아래 링크를 통해 유사한 사례에 대한 설명을 참고하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

동관님의 프로필 이미지
동관

작성한 질문수

질문하기