java設計模式:多例模式
導語:Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。下面我們來看看多例模式,希望對大家有所幫助。
多例設計模式:單例+緩存
★ 緩存在單例中的使用
緩存在編程中使用很頻繁,有着非常重要的作用,它能夠幫助程序實現以空間換取時間,通常被設計成整個應用程序所共享的一個空間,
現要求實現一個用緩存存放單例對象的類。
説明:該緩存中可以存放多個該類對象,每個對象以一個key值標識,key值相同時所訪問的是同一個單例對象。
類對象
1234567891011121314 | package i; public class A { private int value; public int getValue() { return value; } public void setValue( int value) { this e = value; } } |
實現方式1:key值由用户指定
12345678910111213141516171819202122232425262728 | package i; import Map; import ; //該版本的key由用户來指定(如servlet緩存中的url,由用户在請求時發送過來)。池中的對象個數沒控制 public class MyBuffer { //1創建一個存放多個對象的'容器----單例 private static Map<string, a= "" > map = new HashMap<string, a= "" >(); //2給外面提供一個從容器獲取對象的方法 public static A getInstance(String key){ //3先到容器中拿 A a = (key); //4如果沒拿到,則創建一個新的放入容器中,並返回該新創建的對象。 // 如果拿到,則直接返回 if (a== null ){ a = new A(); (key, a); } return a; } } </string,></string,> |
實現方式2:key值由代碼內部自己決定
1234567891011121314151617181920212223242526272829 | package i; import Map; import ; //該版本的key由當前緩存類來維護。能夠控制緩存中對象的個數 public class MyBuffer2 { //定義一個單例的池 private static Map<integer, a= "" > map = new HashMap<integer, a= "" >(); private static int num= 1 ; private static final int MAX= 5 ; public static A getInstance(){ A a = (num); if (a== null ){ a = new A(); (num, a); } num++; if (num>MAX){ //採用某些算法來處理。我們這裏簡單處理:強行把最早放出去的那個給新用户 num= 1 ; } return a; } } </integer,></integer,> |
-
java與JavaScript語言有何不同
java和JavaScript是兩個不同的語言。那麼這兩個語言有什麼不同呢?下面本站小編帶大家一起來看看詳細內容,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!講個故事:話説很久很久以前,有一個叫網景(Netscape)的,十月懷胎,他生了個兒子,很開興,...
-
關於java實驗報告模板
1.掌握JavaApplet的程序結構和開發過程。2.學會編寫Applet對應的HTML文件,掌握從HTML文件向Applet傳遞參數的方法。3.掌握文本框對象的使用方法。4.掌握按鈕類對象的使用方法。5.掌握佈局管理器的用法。6.理解ActionEvent事件的`含義。7.掌握事件源、監視器、處理事...
-
Java 異步回調機制實例解析
回調,回調。要先有調用,才有調用者和被調用者之間的回調。下面小編給大家介紹Java異步回調機制實例解析,歡迎閲讀!Java異步回調機制實例解析一、什麼是回調軟件模塊之間總是存在着一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。回調是一種...
-
java的基礎語法教學
java的基礎語法教學前言學習完了第一個java程序,之後就來系統的學習java。先從基礎語法開始,這個語法你也可以理解為英語或是漢語裏面的語法,只不過大家各有各的特點和區別。學習編程其實也是一個編程語言的學習過程。我們在學習英語的.時候都説,要想學習好英語一...