UserDaoTest는 UserDao의 기능이 잘 동작하는지를 테스하려고 만든 것임으로 책임이나 관심사를 분리해버려야 한다.
분리될 기능 : UserDao와 Connection 구현 클래스의 오브젝트를 만드는 것
그렇게 만들어진 두개의 오브젝트가 연결돼서 사용될 수 있또록 관계를 맺어 주는 것
팩토리 : 객체의 생성 방법을 결정하고 그렇게 만들어진 오브젝트를 돌려줌. 오브젝트를 생성하는 쪽과 생성된 오브젝트를 사용하는 쪽의 역할과 책임을 깔끔하게 분리하려는 목적으료 사용.
DaoFactory.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package springbook.user.dao; public class DaoFactory { //팩토리의 메소드는 UserDao 타입의 오브젝트를 어떻게 만들고 ,어떻게 준비시킬지를 결정한다. public UserDao userDao(){ //UserDao가 사용할 ConnectionMaker 구현 클래스를 결정하고 오브젝트를 만든다. ConnectionMaker connectionMaker = new DConnectionMaker(); /* * 1. UesrDao생성 * 2. 사용한 ConnectionMaker 타입의 오브젝트 제공 * 결국 두 오브젝트 사이의 의존관계 설정 효과 */ UserDao dao = new UserDao(connectionMaker); return dao; } } |
UserDaoTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package springbook.user.test; import java.sql.SQLException; import springbook.user.dao.ConnectionMaker; import springbook.user.dao.DConnectionMaker; import springbook.user.dao.DaoFactory; import springbook.user.dao.UserDao; import springbook.user.domain.User; public class UserDaoTest { public static void main(String[] args) throws ClassNotFoundException, SQLException { UserDao dao = new DaoFactory().userDao(); User user = new User(); user.setId("otep"); user.setName("황은주"); user.setPassword("password"); dao.add(user); System.out.println(user.getId()+" 등록 성공 "); User user2 = dao.get(user.getId()); System.out.println(user2.getName()); System.out.println(user2.getPassword()); System.out.println(user2.getId()+" 조회 성공 "); } } |
'Programming > 토비의 스프링 예제' 카테고리의 다른 글
예제9. 관계설정 (0) | 2014.08.26 |
---|---|
예제8. 생성 오브젝트 코드 수정 (0) | 2014.08.21 |
예제6. 관심사의 분리 (0) | 2014.08.20 |
예제5. 인터페이스의 도입 (0) | 2014.08.20 |
예제4. 클래스의 분리 (0) | 2014.08.20 |