1. IoC (Inversion of Control) IoC 란 코드의 흐름을 제어하는 주체가 바뀌는 것이다. 코드의 흐름을 제어한다는 것은 여러 행위를 포함한다. 오브젝트를 생성하는 것, 오브젝트의 생명주기를 관리하는 것, 메소드를 수행하는 것 등. 그리고 일반적인 프로그램은 이러한 행위를 하나부터 열까지 모두 스스로 수행한다. (우리가 처음 만들었던 프로그램을 잘 생각해보자.) IoC 를 적용한다는 것은 이러한 흐름 제어를 또다른 제 3자가 수행한다는 것을 의미한다. 1) IoC에서는 Object가 자신이 사용할 Object를 생성하거나 선택하지 않는다. 2) Object는 자신이 어떻게 생성되고 사용되는지 알 수 없다. 3) 모든 Object는 제어 권한을 위임받은 특별한 Object에 의해 만들어..