12월 6일- 레코드 클래스와 상속의 문제점

Yullgiii·2023년 12월 6일
0
post-thumbnail

레코드 클래스

레코드 클래스에 대해서 궁금하다면~~~어제 작성한 나의 TIL을 봐보도록하자~
레코드 클래스란?

상속의 한계

레코드 클래스는 상속을 지원하지 않는다는 큰 한계가 있다. 이는 레코드 클래스의 설계 철학인 데이터 중심성과 불변성을 유지하기 위한 제약이다. 따라서, 레코드 클래스를 사용하면서도 상속을 필요로 하는 경우에는 이를 해결하기 위한 방법을 찾아야 한다.

해결 방법

상속의 필요성이 발생하는 경우, 레코드 클래스 대신 일반 클래스를 사용하는 것이 한 가지 방법이다. 일반 클래스는 상속을 지원하므로, 기본 클래스를 정의하고 이를 상속받아 필요한 기능을 추가하는 방식으로 코드를 구현할 수 있다.
또 다른 해결 방법은 인터페이스를 활용하는 것이다. 레코드 클래스는 인터페이스를 구현할 수 있으므로, 공통의 메서드를 인터페이스에 정의하고 이를 구현하는 방식으로 코드를 작성할 수 있다. 이를 통해 다형성을 활용할 수 있으며, 코드의 재사용성도 높일 수 있다.

마지막으로, 컴포지션을 활용하는 방법도 있다. 컴포지션은 한 클래스가 다른 클래스를 포함하는 방식으로, 상속 대신 사용할 수 있는 강력한 기법이다. 기능의 재사용이 필요한 경우, 해당 기능을 가진 객체를 생성하여 사용하는 방식으로 코드를 작성할 수 있다.

예제 코드

아래의 레코드 클래스는 게시글 상세 조회 응답을 위한 DTO를 표현한다.

public record ArticleViewResponse(
    Long id,            
    String title,       
    String content,     
    LocalDateTime createdAt, 
    String author       
) {
    public ArticleViewResponse(Article article) {
        this(
            article.getId(),
            article.getTitle(),
            article.getContent(),
            article.getCreatedAt(),
            article.getAuthor()
        );
    }
}

이 코드는 레코드 클래스의 생성자를 활용하여 Article 엔티티를 ArticleViewResponse DTO로 변환한다. 이처럼 레코드 클래스는 데이터 전송 객체(DTO)를 간결하게 표현할 수 있다.

결론

레코드 클래스는 상속이라는 중요한 기능을 지원하지 않지만, 이를 대체할 수 있는 다양한 방법들이 존재한다. 상황에 따라 적절한 방법을 선택하여 사용하면 레코드 클래스의 한계를 극복하면서 효율적인 코드를 작성할 수 있다

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글