전체 소스는 밑에..하지만 책과는 좀 다름..내 나름대로 끝에 마음대로 짠것임..T.T
위 기능을 분리해서 담당할 클래스를 만들어보자.
우선 UserDaoTest 클래스다
public class UserDaoTest {
public static void main(String[] args) {
UserDao user = new DaoFactory().userDao();
}
}
Factory에서 연결될 오브젝트를 정의를 한다.
public class DaoFactory {
public UserDao userDao(){
ConnectionMaker connectionMaker = new DConnectionMaker();
UserDao dao = new UserDao(connectionMaker);
return dao;
}
}
만약 여러개의 DAO가 있다고 하면
Factory에서
public UserDao getUserDao(ConnectionMaker connectionMaker){
return new UserDao(connectionMaker);
}
public AccountDao accountDao(){
위 기능을 분리해서 담당할 클래스를 만들어보자.
우선 UserDaoTest 클래스다
public class UserDaoTest {
public static void main(String[] args) {
UserDao user = new DaoFactory().userDao();
}
}
Factory에서 연결될 오브젝트를 정의를 한다.
public class DaoFactory {
public UserDao userDao(){
ConnectionMaker connectionMaker = new DConnectionMaker();
UserDao dao = new UserDao(connectionMaker);
return dao;
}
}
만약 여러개의 DAO가 있다고 하면
Factory에서
public UserDao getUserDao(ConnectionMaker connectionMaker){
return new UserDao(connectionMaker);
}
public AccountDao accountDao(){
return new AccountDao(new DConnectionMaker());
}
....
DConnectionMaker에선 따로 커넥션 부분만 정의해서 하면 된다.
마지막 Client에서는
//main
public static void main(String[] args) throws ClassNotFoundException,SQLException{
UserDao dao = new DaoFactory().getUserDao(new MyConnectionMaker());
User user = new User();
user.setId("hello");
user.setName("김말통");
user.setPassword("1234");
dao.add(user);
User user2 = dao.get("hello");
System.out.println("id:"+user2.getId());
System.out.println("name:"+user2.getName());
System.out.println("password:"+user2.getPassword());
}
}
이런식으로 UserDao를 사용하면 된다.
....
DConnectionMaker에선 따로 커넥션 부분만 정의해서 하면 된다.
마지막 Client에서는
//main
public static void main(String[] args) throws ClassNotFoundException,SQLException{
UserDao dao = new DaoFactory().getUserDao(new MyConnectionMaker());
User user = new User();
user.setId("hello");
user.setName("김말통");
user.setPassword("1234");
dao.add(user);
User user2 = dao.get("hello");
System.out.println("id:"+user2.getId());
System.out.println("name:"+user2.getName());
System.out.println("password:"+user2.getPassword());
}
}
이런식으로 UserDao를 사용하면 된다.
'스프링프레임워크공부중 > 1부 초난감DAO 리팩토링' 카테고리의 다른 글
초난감DAO 리팩토링 3_3단게 ****관계설정 책임의 분리**** (0) | 2010.12.16 |
---|---|
초난감DAO 리팩토링 3_2단게 ****인터페이스의 도입**** (0) | 2010.12.16 |
초난감DAO 리팩토링 3_1단게 ****클래스의 분리**** (0) | 2010.12.16 |
초난감DAO 리팩토링 2단계 ****DB 커넥션 만들기의 독립**** (0) | 2010.12.16 |
초난감DAO 리팩토링 1단계 ****커넥션 만들기의 추출**** (0) | 2010.12.16 |