spring学习小结7_使用工厂方法来配置bean:静态工厂方法和实例工厂方法


静态工厂方法:将对象创建的过程封装到另外一个类的静态方法中。当客户端需要对象时,只需要简单地调用工厂方法,而不需要关心对象创建的细节。


实例:
java 文件
/**
 * 静态工厂方法:直接调用某一个类的静态方法,就可以返回bean的实例
 * @author Administrator
 *
 */

public class StaticCarFactory {
	 
	private static Map<String,Car> cars = new HashMap<String,Car>();
	
	static{
		cars.put("audi", new Car("audi",30));
		cars.put("ford", new Car("ford",20));
	}
	//静态工厂方法
	public static Car getCar(String name){
		return cars.get(name);	
	}

}



配置文件:
<!-- 通过静态工厂方法来配置bean:注意:不是配置静态工厂方法实例,而是配置bean实例
		factory-method: 静态方法的名字
		constructor-arg: 如果工厂方法需要传入参数,则使用constructor-arg	来配置参数	
	-->
	<bean id = "car1" class = "com.hl.spring.factory.StaticCarFactory"
		factory-method = "getCar">
		<constructor-arg value = "audi"></constructor-arg>
	</bean>





实例工厂方法:将对象创建的过程封装到另外一个对象实例方法(非静态方法)中。当客户端需要对象时,只需要简单地调用该实例方法,而不需要关心对象创建的细节。


java 文件:
private Map<String,Car> cars = null;

public InstanceCarFactory(){
cars = new HashMap<String,Car>();
cars.put("audi", new Car("audi",20.2));
cars.put("ford", new Car("ford",20.2));

}

public Car getCar(String brand){
return cars.get(brand);
}


}


配置文件:
<!-- 实例工厂方法 -->
	<!-- 配置工厂的实例 -->
	<bean id = "carfactory" class = "com.hl.spring.factory.InstanceCarFactory">	
	</bean>
	
	<!-- 通过实例工厂方法来配置bean 
		factory-bean: 指向实例工厂的bean
		factory-method: 实例工厂方法的名字
		constructor-arg: 如果工厂方法需要传入参数,则使用constructor-arg	来配置参数	
	-->
	<bean id = "car2" factory-bean = "carfactory" factory-method = "getCar">
		<constructor-arg value = "ford"></constructor-arg>
	</bean>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值