제어의 역전

상훈·2024년 1월 30일
0

의존한다의 의미

  • A 클래스가 B 클래스에 의존한다 == A 클래스가 B 클래스를 필요로 하는 상태

    클래스나 모듈 등이 서로 상호 작용하고 서로에게 영향을 주는 것

    • 한 요소가 다른 요소의 변경에 영향을 받거나 줄 수 있는 것을 의미
    • 의존성이 강할 수록 코드 변경이 전체 시스템에 미치는 영향이 큼

의존성이 역전 되었다

  • A 클래스가 B를 사용하지 않고도 B의 내용을 가져다 쓸 수 있는 상태
  • 두 가지 주요 측면
    1. 고수준 모듈이 저수준 모듈에 의존하지 않음
      • 수준 모듈이 저수준 모듈에 직접 의존하지 않고, 둘 다 추상화된 인터페이스나 추상 클래스에 의존함으로써 역전이 이루어짐
    2. 추상화가 세부 구현에 의존
      • 추상화된 인터페이스나 추상 클래스가 실제 구현을 나타내는 저수준 모듈에 의존함으로써 역전이 이루어짐. 이는 고수준 모듈이 세부 구현에 직접 의존하지 않고, 추상화를 통해 저수준 모듈과 상호작용할 수 있게 된다.
  • 질문. 위 두 가지가 같은 것이 아닌가?

고수준 모듈과 저수준 모듈이란

고수준 모듈은 사용자 또른 다른 고수준 모듈과 상호 작용하면서 전반적인 시스템의 흐름을 결정, 저수준 모듈은 세부적인 구현을 담당하여 실제 동작을 수행

  • 고수준 모듈

    • 비즈니스 로직 : 사용자 등록, 주문 처리 등의 비즈니스 기능
    • Ex) MemberService
  • 저수준 모듈

    • 데이터베이스 연결 : 사용자 정보, 주문 내역을 저장하고 검색
    • Ex) MemoryRepository
  • 강의 코드

    • // MemberService의 구현체가 memberRepository의 역할만 바라보고 있고 세부 구현 내용은 모르지만 사용할 수 있음
      public class MemberServiceImpl implements MemberService{
          private final MemberRepository memberRepository;
      
          public MemberServiceImpl(MemberRepository memberRepository) {
              this.memberRepository = memberRepository;
          }
profile
문송 개발자

0개의 댓글