首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

自各儿动手打造ICO容器

2012-11-23 
自己动手打造ICO容器需要五个类(容器类),需要用此容器管理的类全部集成此类package com.metarnet.extendi

自己动手打造ICO容器
需要五个类

(容器类),需要用此容器管理的类全部集成此类


package com.metarnet.extend;
import java.lang.reflect.Field;import com.metarnet.Injects.Inject;
/** * 容器 */public class IOC {/** * 初始化 * @param <T> * @throws ClassNotFoundException  * @throws IllegalAccessException  * @throws IllegalArgumentException  */public void Init() throws Exception{Field[] fields = getClass().getDeclaredFields();for(Field field : fields){Inject inject=field.getAnnotation(Inject.class);if(inject!=null){field.setAccessible(true);field.set(this,Class.forName(inject.ClassName().trim()).newInstance());}}}} 

(注解类)
/** *  */package com.metarnet.Injects;
import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;
/** * 类的依赖注入 * @author yanfan */@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME) public @interface Inject {public String ClassName();}
(主函数用于测试)
package com.metarnet.Main;
import com.metarnet.Injects.Inject;import com.metarnet.Interfaces.Interface1;import com.metarnet.extend.IOC;
public class TestIOC extends IOC{@Inject(ClassName = "com.metarnet.Interfaces.imps.Interface1Impl")private Interface1 interface1;@Inject(ClassName = "com.metarnet.Interfaces.imps.Interface1Impl2")private Interface1 interface2;public Interface1 getInterface1() {return interface1;}
public void setInterface1(Interface1 interface1) {this.interface1 = interface1;}
public static void main(String[] args) {TestIOC ioc = new TestIOC();try {ioc.Init();} catch (Exception e) {e.printStackTrace();}ioc.interface1.SayHello();ioc.interface2.SayHello();}
}
接口
package com.metarnet.Interfaces;
public interface Interface1{public void SayHello();}继承接口类1
package com.metarnet.Interfaces.imps;
import com.metarnet.Interfaces.Interface1;
public class Interface1Impl implements Interface1{
@Overridepublic void SayHello() {System.out.println("Hello World,My Name Is Interface1Impl");}
} 继承接口类2
package com.metarnet.Interfaces.imps;
import com.metarnet.Interfaces.Interface1;
public class Interface1Impl2 implements Interface1{
@Overridepublic void SayHello() {System.out.println("Hello World,My Name Is Interface1Impl2");}
}

另附资源下载地址 http://download.csdn.net/detail/yanfan0916/4773699

热点排行