在系統開發中,有些物件其實只需要乙個,比如說:執行緒池、快取、日誌物件等。在 spring 框架中,就大量應用到了單例設計模式。
使用單例模式的好處:
spring 中 bean 的預設作用域就是 singleton 的。
除了 singleton 作用域,spring 中 bean 還有下面幾種作用域:
spring 實現單例的方式:
xml:
註解:@scope(value = "singleton")
spring 是借助 concurrenthashmap 來實現單例登錄檔。spring 實現單例的核心**如下:
private final mapsingletonobjects = new concurrenthashmap(64);
public object getsingleton(string beanname, objectfactory<?> singletonfactory)
//...省略了很多**
// 如果例項物件在不存在,我們註冊到單例登錄檔中。
addsingleton(beanname, singletonobject);
}return (singletonobject != null_object ? singletonobject : null);
}}//將物件新增到單例登錄檔
protected void addsingleton(string beanname, object singletonobject)
}
php在設計模式中的應用之單例模式
專案剛忙完上線,這幾天比較空閒,就多看看書,多寫寫部落格。先來一發簡單的設計模式 單例模式。單例模式在常用的設計模式裡面是比較簡單的一種,個人理解它最大的作用是保持記憶體中物件的唯一性,從而避免物件頻繁地例項化浪費記憶體資源。應用場景見過最多就是資料庫連線物件的例項化。而單例模式常見的有兩種 懶漢式...
Spring 應用之模板方法設計模式
模板方法模式是行為設計模式的一種,它定義乙個操作中演算法的骨架,而將一些執行步驟延遲到了子類中。模板方法使得子類可以不改變演算法本身的結構,即可重新定義該演算法的某些特定步驟的實現方式。模板方法設計模式 uml 圖 public abstract class template protected v...
設計模式 單例應用 java
最近有空閒時間,就想著把曾經用到過的設計模式做乙個回顧,順便也把它分享出來,僅供參考 1 建立單例類 import org.apache.camel.camelcontext import org.apache.camel.impl.defaultcamelcontext created by lk...