我做了一个IOC的模拟,但是却不知道这是不是IOC?

起因:

有个人看到我写了一段代码:
[code="java"]
// 获得名称创建实例
private Object creatNewExample(String className) {
try {
Class c = Class.forName(className);
return c.newInstance();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
[/code]
说:这不是IOC
我问:IOC不是通过它实现的吗?
他答:这是装载,哪里是IOC。

但是,我代码还没写完呢!
所以,完成后的代码:
[code="java"]
//容器
private static HashMap hashmap = new HashMap();
ReadXml rx;

public IocContent() {
}

public IocContent(String path) {
    rx = new ReadXml(path);
    // 获得XML生成的MAP
    HashMap<String, String> xmlMap = rx.loadInfo();
    manageBean(xmlMap);

}

// 返回所需实例
public Object getBean(String id) {
    return hashmap.get(id);
}

// 从XML中获得需要生成实例并且将其放入容器中
private void manageBean(HashMap<String, String> map) {
    Iterator<String> it = map.keySet().iterator();
    // 循环获得XML中的个个值
    while (it.hasNext()) {
        String temp = it.next();
        Object object = creatNewExample(map.get(temp));
        hashmap.put(temp, object);
    }
}

// 获得名称创建实例
private Object creatNewExample(String className) {
    try {
        Class c = Class.forName(className);
        return c.newInstance();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

[/code]

我的思路是:
由装载-->可以生成实例的IOC-->可以生成实例又可以赋值的IOC(这个还没做到)

我现在不知道,我写的这段代码是不是IOC。我被此人弄糊涂了!谁帮我解释下。

1个回答

是的,spring的bean工厂就是这种类似的模式实现的。

airgundam
airgundam 这里的代码,只是IOC容器的实现(完成度80%,没有实现调用set,get方法设置属性)。其他的代码我并没有发上来(其中包括接口类、XML文件);如果phk说这不是IOC,那么你是不是指的是我没有相应的接口类和实现类呢?
8 年多之前 回复
zyn010101
zyn010101 依赖注入,hibernate的,struts等都用的有这种,调用set,get方法设置属性。
8 年多之前 回复
phk07083224
phk07083224 那个人说的对,确实只有装载,没有IOC。IOC就是依赖转置,而你的程序只是根据classname实例化一个对象而已,根本没有类与类之间的依赖关系,更何来的IOC。
8 年多之前 回复
zyn010101
zyn010101 培训的老师大多都不太靠谱,学校的老师也不靠谱(他们基本不做项目).http://www.oschina.net/news/30591/on-the-quality-of-academic-software?from=20120702
8 年多之前 回复
airgundam
airgundam 忘记说了他是培训的老师
8 年多之前 回复
airgundam
airgundam 嗯~他负责我80%的培训~刚刚新来的。因为他说的东西经常和以前(少打)教我课的那个老师有冲突,所以我现在有点混乱呢
8 年多之前 回复
airgundam
airgundam 嗯~他负责我80%的培训~刚刚新来的。因为他说的东西经常和教我课的那个老师有冲突,所以我现在有点混乱呢~
8 年多之前 回复
zyn010101
zyn010101 学校的老师?培训的老师?
8 年多之前 回复
airgundam
airgundam 可是他为什么要说我写的不对呢?而且,他还负责着我的部分课程的教学,也是说他是我的老师。
8 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐