工厂方法分类:静态工厂方法,实例工厂方法
--静态工厂方法:直接调用某一个类的静态方法就可以返回Bean的实例
--实例工厂方法:即需要先创建实例本身,再调用工厂的实例方法来返回bean的实例
假设:我们现在有一个Car类,类中有brand和price属性
一、使用静态工厂方法
1.静态工厂方法封装类
public class StaticFactory{
private static Map<String,Car> cars = new HashMap<String,Car>();
//写一个静态代码块
static{
cars.put("audi",new Car("audi",300000));
cars.put("ford",new Car("ford",400000));
}
//根据name值获取对象实例
public static Car getCar(String name){
return cars.get(name);
}
}
2.在xml中配置静态工厂方法
<bean id="car" class="StaticFactory全类名" factory-method="getCar">
<constructor-arg value="audi"></constructor-arg>
</bean>
二、实例工厂方法
1.先创建工厂
public static InstanceFactory{
private Map<String,Car> cars = null;
public InstanceFactory(){
cars.put("audi",new Car("audi",300000));
cars.put("bwm",new Car("bwm",400000));
}
public Car getCar(String name){
return cars.get(name)
}
}
2.配置bean
<!-- 配置工厂的实例 -->
<bean id="carFactory" class="carFactory全路径"></bean>
<!-- 通过实例工厂方法来配置bean -->
<bean id="car2" factory-bean="carFactory" factory-method="getCar">
<constructor-arg value="ford"></constructor-arg>
</bean>