1.IOC有两种创建工厂的方法
IoC 通过工厂模式创建 bean 的方式有两种: 静态工厂方法 实例工厂方法
2.两种方法的不同
2.1静态方法创建
就是直接可以通过静态方法来实例化一个对象,采用类名.方法名的方式创建
1
2
3
4
5
6
|
public class HelloFactory { public static HelloWorld getInstance(){ return new Hello(); } } HelloWorldFactory.getInstance(); |
2.2实例方法创建
采用new的方式在堆内存开辟
1
2
3
4
5
6
7
|
public class Hello { public HelloWorld createHelloWorld(){ return new Hello(); } } Hello helloF = new Hello(); hello.createHelloWorld(); |
静态工厂方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Car { private long id; private String name; } package factory; import entity.Car; import java.util.HashMap; import java.util.Map; public class StaticCarFactory { private static Map<Long, Car> carMap; static { carMap = new HashMap<Long, Car>(); carMap.put(1L, new Car(1L, "宝⻢" )); carMap.put(2L, new Car(2L, "奔驰" )); } public static Car getCar( long id){ return carMap.get(id); } } |
xml配置文件
1
2
3
4
|
<!-- 配置静态⼯⼚创建 Car --> < bean id = "car" class = "com.southwind.factory.StaticCarFactory" factorymethod = "getCar" > < constructor-arg value = "2" ></ constructor-arg > </ bean > |
实例工厂创建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package factory; import entity.Car; import java.util.HashMap; import java.util.Map; public class InstanceCarFactory { private Map<Long, Car> carMap; public InstanceCarFactory(){ carMap = new HashMap<Long, Car>(); carMap.put(1L, new Car(1L, "宝⻢" )); carMap.put(2L, new Car(2L, "奔驰" )); } public Car getCar( long id){ return carMap.get(id); } } |
xml配置文件
1
2
3
4
5
6
7
|
<!-- 配置实例⼯⼚ bean --> < bean id = "carFactory" class = "factory.InstanceCarFactory" > </ bean > <!-- 赔偿实例⼯⼚创建 Car --> < bean id = "car2" factory-bean = "carFactory" factory-method = "getCar" > < constructor-arg value = "1" ></ constructor-arg > </ bean > |
总结
工厂模式的思想正好契合SpringIOC的设计思想:某一接口的具体实现类的选择控制权从调用类中移除,转而交给第三方决定,即借由Spring的Bean配置来实现控制,这同样也是工厂模式的思想。充分体现出解耦合和便于维护的特性。
以上就是Spring框架IOC两种创建工厂方法详解的详细内容,更多关于Spring框架IOC创建工厂的资料请关注服务器之家其它相关文章!
原文链接:https://blog.csdn.net/DrLai/article/details/119047049