• 工厂模式代码实现


    工厂模式

    工厂模式很常用,降低程序耦合度提高开发效率,把更多的事交给程序去做。

    spring的ioc就是其中之一。

    导入依赖坐标:dom4j+xpath

    <!--dom4j-->
    <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency>
    <dependency>
         <groupId>jaxen</groupId>
         <artifactId>jaxen</artifactId>
         <version>1.1.6</version>
    </dependency>

    编写beans.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <beans>
        <!--生成service对象配置-->
        <bean id="userService" class="com.travel.service.impl.UserServiceImpl"></bean>
    </beans>

    编写工厂类

    /**
     * 工厂类
     */
    public class BeanFactory {
        //基于工厂创建对象方法
        public static Object getBean(String id){
            Object result = null;
            try {
                //1、加载配置文件
                InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("beans.xml");
                //2、创建dom4j核心解析器
                SAXReader saxReader = new SAXReader();
                //3、读取io,解析xml文件
                Document document = saxReader.read(in);
                //4、编写xpath语法获取bean标签
                String xpath="//bean[@id='"+id+"']";
                //5、获取bean标签对象
                Element element = (Element) document.selectSingleNode(xpath);
                //6、获取bean标签的class属性值 类全限定名
                String className = element.attributeValue("class");
                //7、通过反射,获取类字节码文件
                Class<?> clazz = Class.forName(className);
                //8、通过反射创建对象
                result = clazz.newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    }

    使用

    private UserService userService = (UserService) FactoryBeanUtil.getBean("UserService");
  • 相关阅读:
    PHP循环控制语句中的“for”循环
    PHP循环控制语句之“do...while”
    PHP循环控制语句之“while”
    PHP跳出循环之“continue”
    PHP跳出循环之“break”
    PHP控制语句之“switch”语句
    PHP条件控制语句之“elseif语句”
    PHP控制语句之“if...else”语句
    PHP条件控制语句之“if语句”
    三元运算符
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/13541786.html
Copyright © 2020-2023  润新知