本文主要是介绍透过工厂类讲单例模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/**
* 工厂类,负责动态装载UserDao4MySqlImpl类
*/
public class UserDaoFactory {
//利用一个静态变量来记录UserDaoFactory唯一实例
private static UserDaoFactory instance;
private UserDao userDao;
//私有的构造器,只有UserDaoFactory类内部才可以调用构造器
private UserDaoFactory() {
//可以从配置文件中动态装载UserDao4MySqlImpl实现类,便于灵活更换
userDao = new UserDao4MySqlImpl();
//如DB改为Oracle,只需重设userDao,仅修改此处,灵活性好
userDao = new UserDao4OracleImpl();
}
/**
*synchronized关键字迫使每个线程在进入getInstance()方法之前,
*要先等候别的线程离开该方法.不会有两个线程同时进入这个方法.
*/
public static synchronized UserDaoFactory getInstance() {
if (instance == null) {
instance = new UserDaoFactory();
}
return instance;
}
/**
* 创建UserDao对象
* @return UserDao UserDao接口
*/
public UserDao createUserDao() {
return userDao;
}
}
这篇关于透过工厂类讲单例模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!