작성
·
194
1
안녕하세요,
우선 좋은강의 너무 감사드립니다. 많은 도움이 되고있습니다.
다름이 아니라 DI강의에서 예시로 Car 를 들어주셨는데
1.
기존에 Car 클래스 내부에서 Tire와 Handle객체를 직접 만들어놓았다.
Tire와 Handle의 종류가 바뀌면 해당 Class로 가서 다른 타입의 Tire/Handle객체를 만들어야하는 번거로움이 있다.
2.
클래스의 생성자에 필요한 Tire와 Handle을 매개변수로 받도록하고,
팩토리에서 부품들을 모아놓고, 객체를 생성할 때 필요한 부품을 넣어 조립해준다.
1번의 번거로움을 해결하기위해 2번의 방법이 나왔다.
그런데, 2번 또한 생성자에 필요한 Tire와 Handle의 Type을 선언해놓았기 때문에, 결국 Tire와 Handle종류가 바뀌면 1번과 마찬가지로 Car 클래스로 가서 생성자에 선언되어있는 Tire와 Handle에 Type을 바꿔주어야하고, 실제 조립하는 부분도 변경해주어야하는 번거로움이 생기는거 아닌가요?? 1번과 크게 다르지 않다는 생각이 들어서요..
물론 1번과 다르게 직접 객체는 생성하지 않겠지만요..
답변 2
1
1
타입에 대한 부분은 장춘님이 말씀하신대로 한번 더 추상화 과정이 필요하겠습니다. 생성자에 타입이 지정되어 있으면,결국 생성자에서 타입 변경을 해주어야 런타임때 에러가 안나는 것을 방지할 수 있겠죠.
A Tire와 B Tire를 추상화한 인터페이스 값으로 타입을 지정해주면 해결 할 수 있겠습니다.
좋은 지적 감사드립니다.
강의 전반적으로 전달하고자 했던 의도는 말그대로 의존성에 대한 부분을 외부에서 주입해준다는 것에 있습니다. 그 점에 대해서만 의미가 잘 전달되었으면 합니다!