对工厂模式的认识和理解(一)
2011-08-12 09:06
148 查看
1. package com.ethan.dao; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; //使用dom4j解析xml,自己加入jar、import public class DaoFactory { //设置一个DAO缓冲池 private Map<String,Object> daoMap = new HashMap<String,Object>(); private static DaoFactory df; private DaoFactory(String path) throws Exception { //path 可以用System.getProperty("user.dir")+ package + xml 组合一下,因为xml放在package下边了 Document doc = new SAXReader().read(new File(path+"\\daoContext.xml")); Element root = doc.getRootElement(); List el = root.elements(); for(Iterator it = el.iterator();it.hasNext()) { Element element = (Element)it.next(); String id = element.attributeValue("id"); String impl = element.attributeValue("class"); Class clazz = Class.forName(impl); Object obj = clazz.newInstance(); daoMap.put(id, obj); } } //实例化DAO Factory public static DaoFactory instance(String path) throws Exception { if(df==null) { df = new DaoFactory(path); } return df; } //获取DAO实例 public Object getDAO(String id) { return daoMap.get(id); } } daoFactory.xml: <?xml version="1.0" encoding="UTF-8"?> <daoContext> <dao id="userDao" class="com.ethan.dao.impl.UserDAOImpl"/> <dao id="messageDao" class="com.ethan.dao.impl.MessageDAOImpl"/> </daoContext> 2. package com.ethan.dao; public interface UserDAO { } package com.ethan.dao; public class UserDAOImpl implements UserDAO { } package com.ethan.dao; public class FactoryDAO { public UserDAO createUserDAO() { return new UserDAOImpl(); } } 如果以后换了UserDao的实现,是需要改变 createDAOImpl(), 业务逻辑代码无需改变。好处不言而喻。
相关文章推荐
- 我对类工厂模式有了新认识(ActionScript描述)
- 07@Pattern_Note_LabVIEW工厂模式理解
- 深入理解JavaScript系列(28):设计模式之工厂模式
- 设计模式之我的理解:构建型模式:抽象工厂
- java的工厂模式理解
- 从头认识java-7.8 接口与工厂模式
- 关于工厂模式和建造者模式的理解
- Pattern_Note_LabVIEW工厂模式理解
- 浅析对PetShop4.0的工厂模式的理解
- 黑马程序员:我对工厂模式的理解
- 从实例来理解OOP思想、工厂模式和重构
- 设计模式粗浅理解之一------简单工厂模式
- 个人对于PHP设计模式之工厂模式的理解
- 关于工厂模式的 个人理解
- 对工厂模式的简单理解
- 自己理解的java工厂模式,希望对大家有所帮助
- java工厂模式的小理解(一)
- 理解工厂模式
- 工厂方法【Factory Method】模式---初学者理解
- 理解工厂模式