发布我的framework

05-11-12 windfromsky
模仿spring, 不知道模仿得象不像.

框架
ObjectFactory.jar

业务
BusinessInterface.jar
BusinessImpl.jar

应用App
目标:让App只与BusinessInterface相关, 而与BusinessImpl无关.
在App的代码中通过
IBusiness businessObj =
(IBusiness)objectFactory.getObject(“businessObjId”);
来代替
Ibusiness businessObj = new BusinessImpl();
从而解除App和BusinessImpl的关系.

配置AppConfig
由一系列class文件组成(不是xml文件),
把businessObjId与BusinessImpl对应起来,
这些类放在特定的目录下, 由objectfactory加载

-------------------------------------------------------------

依赖关系

1.
App --> ObjectFactory.jar
App --> BusinessInterface.jar

2.
AppConfig --> ObjectFactory.jar
AppConfig --> BusinessImpl.jar

-------------------------------------------------------------

各个模块的关系

1. AppConfig向ObjectFactory注册对象创建器, 用于创建BusinessImpl对象.
配置类的包为缺省包.

新建一个配置类A1_PersonConfig implements IobjectFactoryConfig:

public class A1_PersonConfig implements IObjectFactoryConfig {	
	public void load(final ObjectFactory objectFactory){
		try {			
			objectFactory.addSingletonObjectCreator(
					"person1",
					new IObjectCreator(){			
						public Object create() {
							Person p = new Person();
							return p;
						}						
					}
			);			
			
		} catch (DuplicateObjectException e) {
			e.printStackTrace();
		}
	}
}
<p class="indent">


2. App从ObjectFactory得到BusinessInterface的实现对象

1)先继承一个ObjectFactory:

package myapp;
public class MyFactory extends ObjectFactory {		
	static ObjectFactory fac = new MyFactory();	
	public static ObjectFactory getInstance(){
		return fac;
	}	
	public static Object getObj(String objId) {
		return getInstance().getObject(objId);
	}
	
	public MyFactory(){
		super();
	}
	
	public MyFactory(File f){
		super(f);
	}	
}
<p class="indent">

2)
在ObjectFactory.jar文件所在的目录中建立一个目录ofconfig, 并在ofconfig中建立目录myapp.MyFactory(目录名字就是MyFactory的完整类名),
把配置类A1_PersonConfig.class拷贝到myapp.MyFactory之下.

假设ObjectFactory.jar所在的位置是

C:\abc\cde\lib\ObjectFactory.jar
那么ofconfig的位置就是这样:

C:\abc\cde\lib\ofconfig
.class文件的位置就是这样:

C:\abc\cde\lib\ofconfig\myapp.MyFactory\A1_PersonConfig.class
这个myapp.MyFactory目录下可能会有很多这样的配置类, ObjectFactory按字母顺序加载这些类

3)App程序中调用:

IPerson person1 =
 (IPerson)MyFactory.getObj("person1");
<p class="indent">

以后如果要添加新的XXXObject的话, 只需新建一个XXXConfig类(实现 IObjectFactoryConfig接口), 在此类中向ObjectFactory注册对象创建器, 然后把编译后的.class文件拷贝到C:\abc\cde\lib\ofconfig\myapp.MyFactory\下就可以了.

文件
http://www.jdon.com/jive/upload/windfromskyaL4842B076.zip




banq
2005-11-12 18:35
非常不错,支持 继续努力啊

猜你喜欢