Spring主要用到兩種設計模式
?
1、工廠模式
Spring容器就是實例化和管理全部Bean的工廠。
工廠模式可以將Java對象的調用者從被調用者的實現邏輯中分離出來。
調用者只關心被調用者必須滿足的某種規則,這里的規則我們可以看做是接口,而不必關心實例的具體實現過程,具體實現由Bean工廠完成。
2、單例模式
???Spring默認將所有的Bean設置為單例模式,即對所有相同的Bean請求,都將返回同一個共享Bean實例,這樣就可以大大減低Java對象創建和銷毀時的系統開銷。
使用Spring將Bean設置為單例模式,則無需自己完成單例模式。
?
?
實例:
Ink.Java
?
package com.pb;/**
*
* 項目名稱:PB_SpringDemo
* 類名稱:Ink
* 類描述: 墨盒接口
* 創建人:Administrator
* 創建時間:2019年7月6日 下午3:05:06
* 修改人:Administrator
* 修改時間:2019年7月6日 下午3:05:06
* 修改備注:
* @version
*
*/
public interface Ink {//獲取墨盒顏色的方法public String getColor();
}
?
ColorInk.Java
package com.pb;public class ColorInk implements Ink {@Overridepublic String getColor() {return "使用彩色墨盒打印";}
}
GreyInk.Java
package com.pb;public class GreyInk implements Ink {@Overridepublic String getColor(){return "采用黑色墨盒打印";}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans><bean id="color" class="com.pb.ColorInk"/><bean id="grey" class="com.pb.GreyInk"/>
</beans>
Test.Java
//使用Spring的方式//創建Spring上下文ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");//測試Spring工廠模式Ink k1=null;k1=(Ink)context.getBean("color");System.out.println(k1.getColor());Ink k2=(Ink)context.getBean("grey");System.out.println(k2.getColor());Ink k11=(Ink)context.getBean("color");//驗證是否是單例模式System.out.println(k1==k11);//輸出 True,表示這個生成的是單例模式,同一個實例對象
運行效果
?