19_傳智播客JDBC_使用DAO工廠模式(代碼超經典)

package five.test.daoFaction;

import java.io.InputStream;
import java.util.Properties;

import five.dao.UserDao;

public class DaoFactory {
 
 // 簡單工廠模式 && 單例模式
 private static UserDao ud = null;
 private static DaoFactory instance = new DaoFactory();
 
 // 單例模式 構造方法 私有
 private DaoFactory(){
  try {
   Properties properties = new Properties();
   //InputStream inputStream = new FileInputStream(new File("src/daoconfig.properties"));
   
   //通過ClassLoader 來得到配置的文件
   InputStream inputStream = DaoFactory.class.getClassLoader()
     .getResourceAsStream("daoconfig.properties");
   properties.load(inputStream);
   String className = properties.getProperty("userDaoClass");
   
   Class myClass = Class.forName(className);
   ud = (UserDao) myClass.newInstance();  
  } catch (Exception e) {
   // 如果再讀取配置文件時出錯,拋出系統啓動異常
   throw new ExceptionInInitializerError(e);
  }
 }
 
    public static DaoFactory getInstance() {
  return instance;
 }
   
    public UserDao getUserDao() {
  return ud;
 } 
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

package five.test;

import java.sql.Date;

import five.dao.UserDao;
import five.domain.User;
import five.test.daoFaction.DaoFactory;

public class UserDaoTest {

 public static void main(String[] args) {
  User user = new User(20, null, "20pass", null, 0);
  user.setBrithday(new Date(0));
  user.setName("dao name1");
  user.setMonney(1000.0f);
  
  //依賴 具體實現[new UserDaoImpl();]
  //對策 工廠模式 通過配置文件
  //存在修改代碼的可能, 在不修改代碼的前提下
  //就只能修改 配置文件
  //UserDao ud = new UserDaoImpl();
  UserDao ud = DaoFactory.getInstance().getUserDao();
  
  ud.addUser(user);
  user = ud.getUser(20);
  
  System.out.print(user.getPassword());
 }
}

發佈了48 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章