인프런, 객체 지향 프로그래밍 입문 - 6

StarSeeker·2023년 3월 10일
0

의존

기능 구현을 위해 다른 구성 요소를 사용하는 것
(객체 생성, 메서드 호출, 데이터 사용)

  • 의존은 변경이 전파될 가능성을 의미한다.

  • 의존하는 대상이 바뀌면 바뀔 가능성이 높아짐!
    (호출하는 메서드의 파라미터 변경)

  • 그래서 순환의존은 위험하다.
    a -> b 의존 b -> c 의존 c -> a 의존

서로 변경의 여파가 전파될 확률이 높아진다.

  • 의존하는 대상이 많다면
    의존하는 대상들이 각자의 이유로 바뀌게 되면 의존받는 주체도 바뀔 가능성이 많아짐.

의존하는 대상이 많을떄는 언제?

기능이 많은 경우

  • 한 클래스에서 많은 기능을 제공하는 경우
    각 기능마다 의존하는 대상이 다를 수 있고 한 기능변경이 다른 기능에 영향을 줄 수 있다.
    -> 테스트 하기도 어려워진다.
  • 해결
  • 기능별로 클래스 분리를 시도한다.
  • 묶어보기 -> 몇 가지 의존대상을 단일 기능으로 묶어서 생각해보면 의존 대상을 줄일 수 있다.

의존 대상 객체를 직접 생성하면?

생성 클래스가 바뀌면 의존하는 코드도 바뀜

  • 해결
    의존 대상 객체를 직접 생성하지 않는다.
  1. 팩토리, 빌더
  2. 의존 주입
  3. 서비스 로케이터
  • 의존 주입
    외부에서 의존 객체를 생성자나 메서드를 통해 주입

  • 조립기가 객체를 생성하고 의존 주입을 처리합니다.(대표적인 경우가 스프링 프레임워크)

  • 의존주입의 장점

  1. 의존 대상이 바뀌면 조립기의 설정만 변경하면 된다.
  2. 의존하는 객체 없이 대역 객체를 사용해서 테스트가 가능
  • DI를 습관처럼 사용하자!
    의존 객체는 주입받도록 코드를 작성하는 습관을 가지자!
profile
춤추듯 개발하고 싶은 사람

0개의 댓글