Bean工厂模式笔记

package com.itheima.factory;

/**

* Bean工厂:创建对象

* 步骤:

*  1. 解析xml,获取所有对象的全限定类型(全名称)

*  2. 反射创建对象,存储到容器中

*      容器:有查找的需求,使用map集合

*  3. 用户需要对象时,从容器中根据id直接获取

*/

public class BeanFactory {

    // String: id , Object : 反射创建好的对象

    private static Map<String,Object> map = new HashMap<>();

    //静态代码块:类加载时执行,只会执行一次

    static {

        //解析xml,获取所有对象的全限定类型(全名称)

        SAXReader reader = new SAXReader();

        try {

            //获取文档对象

            Document doc = reader.read(BeanFactory.class.getClassLoader().getResourceAsStream("beans.xml"));

            //获取根节点

            Element rootElement = doc.getRootElement();

            //获取根节点下的所有的子节点

            List<Element> elements = rootElement.elements();

            //遍历

            for (Element element : elements) {

                String idValue = element.attributeValue("id");

                String classValue = element.attributeValue("class");

                //反射创建对象,存储到容器中

                Class clazz = Class.forName(classValue);

                Object obj = clazz.newInstance();

                //存储到容器中

                map.put(idValue, obj);

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }


//提供调用方法

    public static Object  getBean(String id){

        return map.get(id);

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。