Spring框架開發(fā)IOC兩種創(chuàng)建工廠方法詳解
1.IOC有兩種創(chuàng)建工廠的方法
IoC 通過工廠模式創(chuàng)建 bean 的方式有兩種: 靜態(tài)工廠方法 實例工廠方法
2.兩種方法的不同
2.1靜態(tài)方法創(chuàng)建
就是直接可以通過靜態(tài)方法來實例化一個對象,采用類名.方法名的方式創(chuàng)建
public class HelloFactory { public static HelloWorld getInstance(){ return new Hello(); } } HelloWorldFactory.getInstance();
2.2實例方法創(chuàng)建
采用new的方式在堆內(nèi)存開辟
public class Hello { public HelloWorld createHelloWorld(){ return new Hello(); } } Hello helloF = new Hello(); hello.createHelloWorld();
靜態(tài)工廠方法
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配置文件
<!-- 配置靜態(tài)⼯⼚創(chuàng)建 Car --> <bean id="car" class="com.southwind.factory.StaticCarFactory" factorymethod="getCar"> <constructor-arg value="2"></constructor-arg> </bean>
實例工廠創(chuàng)建
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配置文件
<!-- 配置實例⼯⼚ bean --> <bean id="carFactory" class="factory.InstanceCarFactory"> </bean> <!-- 賠償實例⼯⼚創(chuàng)建 Car --> <bean id="car2" factory-bean="carFactory" factory-method="getCar"> <constructor-arg value="1"></constructor-arg> </bean>
總結(jié)
工廠模式的思想正好契合SpringIOC的設(shè)計思想:某一接口的具體實現(xiàn)類的選擇控制權(quán)從調(diào)用類中移除,轉(zhuǎn)而交給第三方?jīng)Q定,即借由Spring的Bean配置來實現(xiàn)控制,這同樣也是工廠模式的思想。充分體現(xiàn)出解耦合和便于維護的特性。
以上就是Spring框架IOC兩種創(chuàng)建工廠方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Spring框架IOC創(chuàng)建工廠的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java實現(xiàn)合并兩個已經(jīng)排序的列表實例代碼
這篇文章主要介紹了java實現(xiàn)合并兩個已經(jīng)排序的列表實例代碼,有需要的朋友可以參考一下2013-12-12Java多線程并發(fā)synchronized?關(guān)鍵字
這篇文章主要介紹了Java多線程并發(fā)synchronized?關(guān)鍵字,Java?在虛擬機層面提供了?synchronized?關(guān)鍵字供開發(fā)者快速實現(xiàn)互斥同步的重量級鎖來保障線程安全。2022-06-06利用Spring Cloud Config結(jié)合Bus實現(xiàn)分布式配置中心的步驟
這篇文章主要介紹了利用Spring Cloud Config結(jié)合Bus實現(xiàn)分布式配置中心的相關(guān)資料,文中通過示例代碼將實現(xiàn)的步驟一步步介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友下面來一起看看吧2018-05-05