java web基于servlet利用工厂模式为程序解耦

前言

利用工厂模式为程序解耦是在servlet阶段,spring就是类似此方法把对象交给spring创建

在BeanFactory的createObjcet方法里

public static Object createObject(String name)
	{
		try
		{
			// 通过传递过来的name获取application.xml中的id对应的值

			// 获取到Document对象
			SAXReader reader = new SAXReader();

			// 加载application.xml文件
			InputStream inputStream = BeanFactory.class.getClassLoader().getResourceAsStream("application.xml");

			// 读取application.xml流
			Document document = reader.read(inputStream);

			// 获取根节点beas
			Element rooElement = document.getRootElement();

			// 通过根节点获取到根节点下所有的子节点bean,返回集合
			List<Element> list = rooElement.elements();

			// 遍历节点,判断每个元素上的id的值是否和当前的name一致
			for (Element el : list)
			{
				String id = el.attributeValue("id");
				if (id.equals(name))
				{
					String string = el.attributeValue("class");

					// 通过反射创建对象并且返回
					Class clazz = Class.forName(string);
					return clazz.newInstance();
				}
			}

		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return null;
	}

注意application是在src路径下的,这样类加载器才能加载到

直接调用即可

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/88603943