美文网首页设计模式@IT·互联网
常用开源框架中设计模式使用分析-工厂模式(Factory Pat

常用开源框架中设计模式使用分析-工厂模式(Factory Pat

作者: 阿里加多 | 来源:发表于2017-05-19 08:10 被阅读60次

    阿里巴巴长期招聘Java研发工程师p6,p7,p8等上不封顶级别,有意向的可以发简历给我,注明想去的部门和工作地点:1064454834@qq.com

    欢迎关注微信公众号:技术原始积累 获取更多技术干货

    三、工厂模式(Factory Pattern)

    3.1 介绍

    工厂模式是创建型模式,他封装了对象的创建过程,调用者使用具体的工厂方法根据参数就可以获取对应的对象。

    3.2 Spring框架中BeanFactory

    image.png

    如图BeanFactory接口提供了getBean方法,在AbstractBeanFactory中实现了该方法,经过层层继承,实现,最后DefaultListableBeanFactory实现了BeanDefinitionRegistry接口用来保存bean定义,继承了AbstractAutowireCapableBeanFactory用来支撑autowired。

    一个例子

    @Test
    public void testBeanFactoy() throws NamingException, SQLException, ParseException, IOException {
    
        //创建Bean工厂
        DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
    
        //给bean工厂添加bean定义,解析xml里面的bean放入bean工厂
        loadBeanDefinitions(bf);
    
        //根据名字从bean工厂获取bean
        Hello hello = (Hello) bf.getBean("hello");
        hello.sayHello();
        
        Hello2 hello2 = (Hello2) bf.getBean("hello2");
        hello2.sayHello();
        
    
    }
    
    protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws IOException {
        XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory);
    
        String[] configLocations = new String[] { "beans2.xml" };
        if (configLocations != null) {
            beanDefinitionReader.loadBeanDefinitions(configLocations);
        }
    }
    

    3.3 使用场景

    • 不同条件下创建不同实例,用于统一管理bean
    • 不同条件下调用不同工厂方法获取不同场景下的bean

    欢迎关注微信公众号:技术原始积累 获取更多技术干货

    image.png

    相关文章

      网友评论

        本文标题:常用开源框架中设计模式使用分析-工厂模式(Factory Pat

        本文链接:https://www.haomeiwen.com/subject/xggexxtx.html