DI(2)
-
IOC의 필요성 - 4. 오브젝트 팩토리, 제어관계 역전
오브젝트 팩토리 지금까지는 문제가 많은 초난감 DAO를 깔끔한 구조로 리펙토링하는 작업을 수행했다. 하지만, 여태껏 얼렁뚱땅 넘긴 게 하나 있다. 바로 클라이언트인 UserDaoTest이다. 기존에 코드의 성능 및 동작여부를 테스트하면 UserDaoTest가 갑자기 어떤 ConnectionMaker 구현 클래스를 결정해하는 책임을 엉겁결에 떠맡았다. 즉, 관계설정을 결정해하는 책임을 담당할 클래스를 생성해야한다. 이 클래스의 역할은 객체의 생성 방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 것인데, 이런 일을 하는 오브젝트를 흔히 팩토리라고 부른다. DaoFactory를 생성하여 기존에 UserDaoTest가 책임지고 있었던 관계 설정 부분을 옮기자 package springbook.user.dao..
2022.01.09 -
IOC의 필요성 - 2. 클래스 상속을 통한 관심사 분리
DB Connection 제작 메서드 독립 직전 포스팅에서 제작한 UserDao 코드가 엄청난 인기를 얻어 네ㅇ버와 카ㅋ오에서 UserDao를 구매하겠다고 주문이 들어왔다. 그런데, 납품 과정에서 문제가 발생했다. 문제는 네ㅇ버와 카ㅋ오에서 각기 다른 종류의 DB를 사용하고 있고, DB 커넥션을 가져오는 데 있어 독자적으로 만든 방법을 적용하고 싶어한다는 점이다. 더욱 큰 문제는 UserDao를 구매한 이후에도 DB 커넥션을 가져오는 방법이 종종 변경될 가능성이 높다는 점이다. 물론 고객한테 직접 UserDao 소스코드를 제공하여 직접 수정해서 쓰라고 하고 싶지만, 초 특급 비밀기술이 적용된지라 고객에게 소스코드를 직접 공개하고 싶지 않다. 이런 경우 어떻게 해야 고객 스스로 원하는 DB커넥션 생성 방식..
2022.01.09