전체 소스는 밑에..하지만 책과는 좀 다름..내 나름대로 끝에 마음대로 짠것임..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(){
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를 사용하면 된다.

+ Recent posts