论坛首页 Java企业应用论坛

简单工厂的改进

浏览 2108 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-01-17  
1.具体类的接口
public interface I {
	public void m();
}
2.具体类
public class AI implements I {

	@Override
	public void m() {
		// TODO Auto-generated method stub
		System.out.println("AI");
		
	}

}
public class BI implements I {

	@Override
	public void m() {
		// TODO Auto-generated method stub
		System.out.println("BI");
		
	}

}
public class CI implements I {

	@Override
	public void m() {
		// TODO Auto-generated method stub
		System.out.println("CI");
		
	}

}
3.xml或者property配置文件
property文件
AI=cn.justin.l.AI
BI=cn.justin.l.BI
CI=cn.justin.l.CI
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Single Factory</comment>
<entry key="AI">cn.justin.l.AI</entry>
<entry key="BI">cn.justin.l.BI</entry>
<entry key="CI">cn.justin.l.CI</entry>
</properties>
4.处理配置文件的类
public class PU {
	private  Properties p = new Properties();
	public PU() {	
		try {
			//p.load(new FileInputStream("./src/factory.property"));
			p.load(PU.class.getResourceAsStream("factory.property"));
			//p.loadFromXML(PU.class.getResourceAsStream("factory.xml"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}			
	}
	public String get(String key) {
		return p.getProperty(key);
	}
}
5.工厂类
public class SFactory {
	private PU pu =null;
	public SFactory(PU pu) {
		super();
		this.pu = pu;
	}
	public I make(String key)
	{
		try {
			return (I) Class.forName(pu.get(key)).newInstance();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} 
	}

}
6.测试类
public class T {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		PU puu=new PU();
		SFactory f=new SFactory(puu);
		I i=f.make("AI");
		i.m();
		i=f.make("BI");
		i.m();
	}

}

这样的简单工厂也可以很方便的扩展。
只要在配置文件里面配就可以了。

附件为工程
   发表时间:2008-01-17  
已经有无数个这样的实现了.
0 请登录后投票
   发表时间:2008-01-23  
jomper 写道
已经有无数个这样的实现了.

就是类的加载,地球人都知道了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics