채널톡 아이콘

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

에르난데스님의 프로필 이미지

작성한 질문수 2

스프링 핵심 원리 - 기본편

'의존'이란 개념을 어디까지 고려해야하는지 궁금합니다.

해결된 질문

작성

·

25

0

[질문 내용]
안녕하세요

스프링 핵심 원리 이해1 - 예제 만들기, 스프링 핵심 원리 이해2-객체 지향 원리 적용 까지 강의를 수강하고 궁금한 것이 생겨서 질문 드립니다.

DIP를 지키기 위해 DI 컨테이너를 활용하여, 구현체가 추상화 인터페이스에 의존하여 결합도를 낮춘다고 이해하였습니다. 덕분에 설계할 때 객체를 유연하고 확장가능하게 만들 수 있다는 사실도 알게되었습니다.

 

여기에서, 궁금한 점은

첫째로, Grade와 Member와 같은 데이터를 담기 위한 객체들의 의존성은 따로 신경써도 되지 않는지 궁금합니다. 특시 Memeber는 OrderServiceImpl, MemeberServiceImpl, MemeoryMemberRepository에서 모두 사용이 되는데, 결국 저 3개의 구현체들은 Memeber를 의존한다고 볼 수 있으니, 이에 따른 side effect는 걱정하지 않아도 되는지, 만약 그렇다면 왜 그런지 궁금합니다.

public enum Grade {
    Basic,
    VIP
}

public class Member {
    private Long id;
    private String name;
    private Grade grade;


    public Member(long id, String name, Grade grade) {
        this.id = id;
        this.name = name;
        this.grade = grade;
    }

    public Long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public Grade getGrade() {
        return grade;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setGrade(Grade grade) {
        this.grade = grade;
    }
}

 

둘째로, 명칭에 관해서도 확실히 하고 싶은게, Grade와 Member는 해당 프로젝트에서 마치 타입과 같은 역할을 하니, 이를 '타입 의존성'이 불러도 되는지 궁금합니다.

 

감사합니다.

답변 1

1

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 에르난데스님.

스프링 강의에서의 객체 지향 원리와 관련된 의문을 해결해 드리겠습니다.

먼저, Grade와 Member와 같은 데이터 객체의 의존성에 대해 설명드리겠습니다. 일반적으로 데이터 객체(또는 도메인 객체)는 어플리케이션의 비즈니스 로직을 구현하는데 필요한 데이터와 메서드를 캡슐화하는 역할을 하며, 주로 여러 레이어에서 사용될 수 있습니다. 이러한 객체들은 복잡한 비즈니스 로직보다는 단순히 데이터 구조를 나타내기 때문에 DIP(Dynamic Interface Pattern)와 같은 원칙의 영향을 상대적으로 적게 받습니다. 따라서, 이러한 객체들의 의존성은 설계 시 크게 걱정할 필요가 없습니다. 측면 효과(side effect)도 적기 때문에, 보통 데이터 자체의 안정성과 일관성을 유지하면서 사용하시면 됩니다.

두 번째로, Grade와 Member 같은 객체를 ‘타입 의존성’이라고 부르는 것은 다소 다르다고 말씀드리고 싶습니다. 타입 의존성이라는 용어는 일반적으로 사용되지는 않으며, 주어진 프로젝트에서 정의된 타입 자체를 의미하는 데 사용하는 것이 아니라 주로 인터페이스나 클래스 간의 관계에서의 의존성을 나타냅니다. 따라서 Grade와 Member는 도메인 모델 내의 특정 데이터 구조로 이해하시면 됩니다.

참고로, 강의의 원리를 보다 잘 이해할 수 있도록 추가적인 리소스나 관련 질문 게시판을 참고하는 것도 도움이 될 것입니다. 아래 링크에서는 비슷한 주제에 대해 더 자세한 설명을 확인할 수 있습니다:
- 의존관계, 레퍼런스, DIP

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