«   2025/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

초난감DAO 리팩토링 4단게 ****팩토리 단계**** 본문

스프링프레임워크공부중/1부 초난감DAO 리팩토링

초난감DAO 리팩토링 4단게 ****팩토리 단계****

행복한 수지아빠 2010. 12. 16. 15:07
전체 소스는 밑에..하지만 책과는 좀 다름..내 나름대로 끝에 마음대로 짠것임..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를 사용하면 된다.