IoC, 제어의 역전과 위임(Delegation)

딱히 스프링이 당장 필요해서라기 보다는 자바에 대한 개념을 견고히 하기 위해서 토비의 스프링 3.1 판을 보고 있는 중…

1.4.3장 제어권의 이전을 통한 제어관계 역전(92page)은 IoC(Inversion Of Control)을 설명한 챕터. 이해가 안 되면 책을 뒤져보라!

짧은 개발경험에서 그나마 IoC가 무엇인지 비교해 볼 수 있는건 Objective-C로 개발할 때의 애플리케이션의 라이프사이클에 따른 콜백 함수를 위임하여 구현하는 것이 아닐까 한다.

프로그램의 플로우 안에서 논리적으로 한 객체가 다른 객체의 메서드를 요청하고, 요청받은 메서드는 또 다른 메서드를 요청하는 단방향적인 흐름도 객체간의 결합도를 높이는 단점이 있다.

즉 객체 간의 결합도를 낮추고 독립성을 높이려면 객체의 생성과 소멸, 요청도 누군가에게 위임하는 팩토리 형태가 소프트웨어 공학적으로 좀 더 건강한 구조라고 할 수 있다는 걸 깨닫게 됨.

부족한 식견이지만 왜 다들 “토비의 스프링”을 극찬하는지 보면서 조금이나마 느끼게 된다.