제어의 역전이란?

  • 제어의 역전은 프로그램의 제어 흐름의 구조가 뒤바뀌는 것이다.
  • 모든 오브젝트가 능동적으로 자신이 사용할 클래스를 결정하고, 언제 어떻게 그 오브젝트를 만들지를 스스로 관장하고 모든 종류의 작업을 사용하는 쪽에서 제어하는 기존 제어하는 흐름을 뒤집은 흐름.

템플릿 메소드 패턴

추상 UserDao를 상속한 서브클래스는 getConnection()을 구현한다. 하지만 이 메소드가 언제 어떻게 사용될지는 자신은 모른다. 서브클래스에서 결정되는 것이 아니다. 단지 이런 방식으로 DB커넥션을 만든다는 기능만 구현하면 슈퍼클래스의 템플릿 메소드(add(), get())에서 필요할 때 호출한다는 뜻이다. 결국, 제어권을 상위 템플릿 메소드에 넘기고 자신은 필요할 때 호출되어 사용되도록 한다.

라이브러리 vs 프레임워크

라이브러리를 사용하는 코드는 애플리케이션 흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다.

프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다. 보통 프레임워크 위에 개발한 클래스를 등록하고, 프레임워크가 흐름을 주도하는 중에 개발자가 만든 애플리케이션 코드를 사용하도록 만드는 방식이다.(제어의 역전)

툴킷, 엔진, 라이브러리는 제어의 역전 개념이 적용되어 있지 않으므로 프레임 워크라 부르면 안된다. 애플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으로 동작해야 한다.

출처

토비의 스프링(책)

댓글남기기