728x90
IoC
제어의 역전(Inversion of Control)
오브젝트 팩토리
UserDaoTest는 UserDao의 기능이 잘 동작하는지를 테스트하려고 만든 것인데, 다른 책임까지 떠맡고 있으므로 문제가 있다.
이걸 분리하는 작업을 진행한다.
팩토리
- 객체의 생성 방법을 결정하고, 만들어진 오브젝트를 돌려준다. 이런 일을 하는 오브젝트를 팩토리(factory)라고 부른다.
- 단지 오브젝트를 생성하는 쪽과 생성된 오브젝트를 사용하는 쪽의 역할과 책임을 깔끔하게 분리하는 목적으로 사용.
public class DaoFactory {
public UserDao userDao(){ // 팩토리의 메소드는 UserDao 타입의 오브젝트를 어떻게 만들고, 어떻게 준비시킬지 결정.
ConnectionMaker connectionMaker = new LikelionConnectionMaker();
UserDao userDao = new UserDao(connectionMaker);
return userDao;
}
}
public static void main(String[] args) throws SQLException, ClassNotFoundException {
UserDao userDao = new DaoFactory().userDao();
...
}
}
- DaoFactory의 userDao 메소드를 호출하면 LikelionConnectionMaker()를 사용해 DB 커넥션을 가져오도록 이미 설정된 UserDao 오브젝트를 돌려준다.
- UserDaoTest는 이제 UserDao가 어떻게 만들어지는지 어떻게 초기화가되어 있는지에 신경 쓰지 않고 팩토리로부터 UserDao 오브젝트를 받아, 자신의 관심사인 테스트를 위해 활용하기만 하면 된다.
이렇게 각각 자신의 책임에만 충실하도록 역할에 따라 분리하는 작업을 했다.
반응형
'Server > Spring&Spring Boot' 카테고리의 다른 글
[토비의 스프링] 스프링의 IoC - 오브젝트 팩토리를 이용한 스프링 IoC (0) | 2022.10.29 |
---|---|
[토비의 스프링] 제어의 역전 - 오브젝트 팩토리 활용, 제어권의 이전을 통한 제어관계 역전 (0) | 2022.10.29 |
[토비의 스프링] 오브젝트와 의존관계 - 인터페이스, 책임의 분리 (0) | 2022.10.24 |
[토비의 스프링] 오브젝트와 의존관계 - DAO의 확장 (0) | 2022.10.24 |
[토비의 스프링] 오브젝트와 의존관계 - DAO의 분리 (0) | 2022.10.24 |