본문 바로가기

Spring/Spring

(SPRING) 오브젝트와 의존관계 (일반적인 IOC version02)

제어의 역전(IOC) : 프로그램의 제어 흐름 구조가 뒤바뀌는 것

일반적인 프로그램 흐름 : 능동적으로 각 오브젝트는 프로그램 흐름을 결정

  1. main() 에서 사용할 오브젝트 결정
  2. 결정한 오브젝트 생성
  3. 만들어진 오브젝트의 메소드 호출
  4. 다음에 사용할 것을 결정하고 호출

제어의 역전 : 이러한 흐름을 완전히 바꾸는 것

  1. 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하지 않는다.(생성도 안함)
  2. 자신도 어떻게 만들어지고 어떻게 사용되는지 알 수 없다.
  3. 모든 오브젝트는 제어 권한을 갖는 특별한 오브젝트에 의해 결정되어지고 만들어진다.
  • 이전 : ConnectionMaker의 구현 클래스를 결정하고 오브젝트를 만드는 제어권은 UserDao
  • 리펙토링이후 : 해당 권한은 DaoFactory에 있다.

DaoFactory의 응용 : 만약 DaoFactory에 UserDao가 아닌 다른 Dao 생성 기능을 넣는다면?

결론 : 어떤 ConnectionMaker 구현 클래스를 사용하지를 결정하는 기능이 중복되서 나타난다.

 

개선 : 별도의 메소드로 뽑아내기!

  • DAO 팩토리 메소드가 아무리 많아져도 문제가 없다.


토비의 스프링 3.1 - Vol.1 스프링의 이해와 원리
국내도서
저자 : 이일민
출판 : 에이콘출판사 2012.09.21
상세보기