작성
·
371
1
안녕하세요. 큰돌님 항상 좋은 강의 감사합니당!
교재에 있는 DI 관련 그림들인데 두 그림의 화살표 방향이 다른데 첫번째 그림이 잘못된건가요..? 추상화는 세부사항에 의존하면 안되는데 첫번째 그림은 Dependency Injector가 세부사항에 의존하는 구조로 되어있어요!
추가적으로 질문 하나 더 드립니다.
의존관계역전원칙
상위 모듈은 하위 모듈에 의존해서는 안 된다. 둘 다 "추상화"에 의존해야 한다.
"추상화"는 세부사항에 의존해서는 안 된다. 세부 사항은 "추상화"에 따라 달라져야 한다.
여기에서 "추상화"는 예제에서의 Developer와 같은 Dependency Injector를 의미하는 것 같은데 제대로 이해 한건가요..?
답변 1
1
안녕하세요 햄스터님 ㅎㅎ
볼때마다 느끼는 건데 햄스터라는 아이디 정말 좋네요... ㅎㅎ
교재에 있는 DI 관련 그림들인데 두 그림의 화살표 방향이 다른데 첫번째 그림이 잘못된건가요..?
>> 아니요. 저렇게 의존성을 주입한다. 라는 의미입니다.
A <- B 이렇게 의존성을 갖는다. 라면.
A -> B 이렇게 의존성을 주입한 상태
라고도 보시면 됩니다.
의존성역전이라는 것 자체가
원래는
A -> B라는 상태에서
A <- B라는 상태로 만들어서 의존관계를 역전하는 건데요.
A <- B = B는 A에 의존한다.
이를
A -> B로 의존성을 주입했다라고도 합니다.
(강제적으로 의존성주입 객체를 만들어 주입한 경우 저런 워딩을 많이 씁니다.)
의존관계역전원칙
상위 모듈은 하위 모듈에 의존해서는 안 된다. 둘 다 "추상화"에 의존해야 한다.
"추상화"는 세부사항에 의존해서는 안 된다. 세부 사항은 "추상화"에 따라 달라져야 한다.
여기에서 "추상화"는 예제에서의 Developer와 같은 Dependency Injector를 의미하는 것 같은데 제대로 이해 한건가요..?
>>
음.. 살짝 다릅니다. 추상화는 저런 의미를 가지고 그 추상화를 구현할 때 쓰이는 객체가 바로 Dependency Injector가 되는 것입니다.
이렇게 정리하면 될거 같습니다.
상위 모듈은 하위 모듈에 의존해서는 안 된다. 둘 다 "추상화"에 의존해야 한다.
"추상화"는 세부사항에 의존해서는 안 된다. 세부 사항은 "추상화"에 따라 달라져야 한다.
그리고 추상화는 Dependency Injector를 기반으로 구현할 수 있다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
답변 감사합니다!