设计模式学习 - 工厂模式
2017-01-11 00:00
148 查看
工厂模式就是根据提供的图纸制造对应的东西。
下面是一个根据properties配置文件,生产一个UserDao实例的例子。这样的好处是修改配置文件就可以修改DaoFactory生产出的UserDao实现类,而不需要修改代码。
工厂代码:
UserDaoImpl1:
UserDaoImpl2:
daoconfig.properties:
运行效果:
下面是一个根据properties配置文件,生产一个UserDao实例的例子。这样的好处是修改配置文件就可以修改DaoFactory生产出的UserDao实现类,而不需要修改代码。
工厂代码:
package com.xiaol.study.dao; import java.io.InputStream; import java.util.Properties; public class DaoFactory { // 注意类初始化的顺序 // 如果userDao = null放在instance = new DaoFactory()后面,那执行顺序就是代码后面的注释 // 那么会导致已经拿到UserDao对象引用的userDao被置为null private UserDao userDao = null;// 3 private static DaoFactory instance = new DaoFactory();// 1 private DaoFactory() { try { Properties prop = new Properties(); // 通过类加载器加载文件比用文件系统加载要好 InputStream inStream = DaoFactory.class.getClassLoader().getResourceAsStream("daoconfig.properties"); prop.load(inStream); String UserDaoClass = prop.getProperty("userDaoClass"); Class clazz = Class.forName(UserDaoClass); userDao = (UserDao) clazz.newInstance();// 2 } catch (Throwable e) { // 把异常捕获为unchecked异常 throw new ExceptionInInitializerError(e); } } public static DaoFactory getInstance() { return instance; } public UserDao getUserDao() { return userDao; } }
UserDaoImpl1:
package com.xiaol.study.dao; public class UserDaoImpl1 implements UserDao { public void save() { System.out.println("Impl1 save!"); } }
UserDaoImpl2:
package com.xiaol.study.dao; public class UserDaoImpl2 implements UserDao { public void save() { System.out.println("Impl2 save!"); } }
daoconfig.properties:
userDaoClass=com.xiaol.study.dao.UserDaoImpl1
运行效果:
Impl1 save!
相关文章推荐
- 设计模式学习笔记-----工厂模式
- C#描述设计模式(2):工厂模式学习心得及我的项目应用
- JAVA设计模式学习之----创建模式:工厂模式(工厂方法)
- javascript 模式设计之工厂模式学习心得
- 设计模式学习笔记四:工厂方法(Factory Method)
- Head First 设计模式学习笔记(4)---工厂模式
- 设计模式学习----简单工厂模式
- 设计模式学习2 -- 工厂模式
- 设计模式学习笔记之工厂模式
- 设计模式学习之工厂模式
- HeadFirst 设计模式学习笔记4--工厂模式
- 设计模式入门学习之工厂模式
- 设计模式学习--工厂模式
- C#面向对象设计模式纵横谈 学习笔记3 Abstract Factory 抽象工厂
- 设计模式学习笔记(一)——Abstract Factory抽象工厂
- 设计模式学习笔记三:简单工厂(Simple Factory)
- 设计模式学习小结——第一篇 原则和工厂的比较
- 设计模式学习小结——第一篇 原则和工厂的比较
- HeadFirst 设计模式学习笔记4--工厂模式
- 简单工厂模式(未完成)——小鸟学习设计模式笔记系列