제어의 역전(IOC) : 프로그램의 제어 흐름 구조가 뒤바뀌는 것
일반적인 프로그램 흐름 : 능동적으로 각 오브젝트는 프로그램 흐름을 결정
- main() 에서 사용할 오브젝트 결정
- 결정한 오브젝트 생성
- 만들어진 오브젝트의 메소드 호출
- 다음에 사용할 것을 결정하고 호출
제어의 역전 : 이러한 흐름을 완전히 바꾸는 것
- 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하지 않는다.(생성도 안함)
- 자신도 어떻게 만들어지고 어떻게 사용되는지 알 수 없다.
- 모든 오브젝트는 제어 권한을 갖는 특별한 오브젝트에 의해 결정되어지고 만들어진다.
- 이전 : ConnectionMaker의 구현 클래스를 결정하고 오브젝트를 만드는 제어권은 UserDao
- 리펙토링이후 : 해당 권한은 DaoFactory에 있다.
DaoFactory의 응용 : 만약 DaoFactory에 UserDao가 아닌 다른 Dao 생성 기능을 넣는다면?
결론 : 어떤 ConnectionMaker 구현 클래스를 사용하지를 결정하는 기능이 중복되서 나타난다.
개선 : 별도의 메소드로 뽑아내기!
- DAO 팩토리 메소드가 아무리 많아져도 문제가 없다.
|
'Spring > Spring' 카테고리의 다른 글
(SPRING) 스프링 AOP : 프록시 기반 AOP (0) | 2019.12.25 |
---|---|
(SPRING) 스프링 웹 애플리케이션 제거방법 (0) | 2019.12.25 |
(SPRING) AOP(Aspect-Oriented-Programming) (0) | 2019.12.24 |
(SPRING) 오브젝트와 의존관계 (스프링에 IOC) (0) | 2019.12.09 |
(SPRING) 오브젝트와 의존관계 (일반적인 IOC version01) (0) | 2019.11.13 |