利用工厂实现IOC
2007-08-07 17:58
344 查看
ioc.properties文件内容(配置文件):
#接口=实现类
com.kay.struts.dao.UserDAO=com.kay.struts.dao.impl.UserDAOImpl
工厂类:
package com.kay.struts.common;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
public final class IocUtil
{
//文件路径
private static final String filePath ="com/kay/struts/common/ioc.properties";
private static Map<Class,Object> map;
/**
* 初始化方法
* @return
*/
private static Map init(){
InputStream input = IocUtil.class.getClassLoader().getResourceAsStream(filePath);
Properties pro = new Properties();
try
{
pro.load(input);
input.close();
//获得key集合
Iterator iter = pro.keySet().iterator();
String key = "";
String value = "";
map = new HashMap<Class,Object>();
while(iter.hasNext()){
key = (String) iter.next();
value = pro.getProperty(key);
Class cla = Class.forName(key);
Object obj = Class.forName(value).newInstance();
map.put(cla, obj);
}
return map;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
public static Object lookup(Class cls){
if(map == null){
map = new HashMap<Class,Object>();
init();
}
Object obj = map.get(cls);
if(obj != null){
return obj;
}
return null;
}
}
UserDAO接口:
package com.kay.struts.dao;
import com.kay.struts.common.exception.DAOException;
import com.kay.struts.vo.User;
public interface UserDAO
{
public User findByNameAndPass(String name,String pass) throws DAOException;
}
UserDAO 接口实现类:
package com.kay.struts.dao.impl;
import com.kay.struts.common.exception.DAOException;
import com.kay.struts.dao.UserDAO;
import com.kay.struts.vo.User;
public class UserDAOImpl
implements UserDAO
{
public User findByNameAndPass(String name, String pass)
throws DAOException
{
User user = null;
if(name.equals("tom") && pass.equals("123")){
user = new User();
user.setId(1);
user.setName(name);
user.setPass(pass);
}
return user;
}
}
调用方法:
UserDAO dao = (UserDAO) IocUtil.lookup(UserDAO.class);
#接口=实现类
com.kay.struts.dao.UserDAO=com.kay.struts.dao.impl.UserDAOImpl
工厂类:
package com.kay.struts.common;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
public final class IocUtil
{
//文件路径
private static final String filePath ="com/kay/struts/common/ioc.properties";
private static Map<Class,Object> map;
/**
* 初始化方法
* @return
*/
private static Map init(){
InputStream input = IocUtil.class.getClassLoader().getResourceAsStream(filePath);
Properties pro = new Properties();
try
{
pro.load(input);
input.close();
//获得key集合
Iterator iter = pro.keySet().iterator();
String key = "";
String value = "";
map = new HashMap<Class,Object>();
while(iter.hasNext()){
key = (String) iter.next();
value = pro.getProperty(key);
Class cla = Class.forName(key);
Object obj = Class.forName(value).newInstance();
map.put(cla, obj);
}
return map;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
public static Object lookup(Class cls){
if(map == null){
map = new HashMap<Class,Object>();
init();
}
Object obj = map.get(cls);
if(obj != null){
return obj;
}
return null;
}
}
UserDAO接口:
package com.kay.struts.dao;
import com.kay.struts.common.exception.DAOException;
import com.kay.struts.vo.User;
public interface UserDAO
{
public User findByNameAndPass(String name,String pass) throws DAOException;
}
UserDAO 接口实现类:
package com.kay.struts.dao.impl;
import com.kay.struts.common.exception.DAOException;
import com.kay.struts.dao.UserDAO;
import com.kay.struts.vo.User;
public class UserDAOImpl
implements UserDAO
{
public User findByNameAndPass(String name, String pass)
throws DAOException
{
User user = null;
if(name.equals("tom") && pass.equals("123")){
user = new User();
user.setId(1);
user.setName(name);
user.setPass(pass);
}
return user;
}
}
调用方法:
UserDAO dao = (UserDAO) IocUtil.lookup(UserDAO.class);
相关文章推荐
- 利用Java的反射与代理实现IOC模式
- SpringIoc 和 工厂模式(反射实现)
- 利用反射机制实现工厂模式
- php利用反射优雅的实现工厂
- 利用Java的反射实现spring的IOC(推荐!!!)
- javaweb项目中利用反射实现工厂模式
- [Spring] IOC的实现原理—反射与工厂模式
- java 利用接口实现工厂模式
- 利用工厂设计模式实现业务层和dao层的解耦
- 利用C++11实现一个自动注册的工厂
- 机房重构利用策略模式+简单工厂实现消费金额的计算
- 反射 实现工厂模式 和 spring IOC 实现原理
- 基于配置文件的工厂设计模式实现,并且做到对象的单例,类似于spring的ioc
- 利用Java的反射与代理实现IOC模式
- 利用C++11实现一个自动注册的工厂
- 利用C++11实现一个自动注册的工厂
- 第六节:反射(几种写法、好处和弊端、利用反射实现IOC)
- 利用Java的反射与代理机制实现IOC
- 利用反射实现工厂模式.
- 利用C++11实现一个自动注册的工厂