005 IOC--使用工厂方法创建Bean

一 . 概述

  在前面,我们对IOC容器有了一定的认识,我们知道IOC容器的一个核心的任务就是创建Bean.

  之前,我们还说到Bean的创建唯一方式就是通过构造函数.但是在此还有一个特殊的情况,就是工厂.


二 .工厂模式

  在设计模式之中,工厂方法的核心就是创建对象,因此很多API都是遵守这个规则,将Bean创建的细节封装起来,

    然后提供了一个工厂专门来创建Bean.

一般情况下,传统的工厂分成静态工厂和动态工厂(现在我们不需要再自己编写这样的工厂类了).


三. 使用静态工厂创建Bean

public class Factory {
    
    public static Date getDate() {
        return new Date();
    }
}

我们创建了一个静态工厂,调用getDate()方法就创建了一个Date对象.

<bean id="date" class="com.trek.factory.Factory" factory-method="getDate"></bean>

我们将静态工厂的信息配置在配置文件之中.

  测试代码 :  

    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        Date date = (Date) context.getBean("date");
        System.out.println(date);

现在我们一样可以在IOC容器之中获取Bean.


四 .使用动态工厂创建Bean

public class Factory {
    
    public  Date getDate() {
        return new Date();
    }
}

我们创建了一个动态工厂,现在我们无法使用类名去创建一个对象方法了.

    <bean id="factory" class="com.trek.factory.Factory"></bean>
    
    <bean id="date"  factory-bean="factory" factory-method="getDate"></bean>

其实和之前一样,我们创建了一个工厂Bean,然后通过这个工厂Bean来完成Bean的创建.

猜你喜欢

转载自www.cnblogs.com/trekxu/p/9090711.html
005