**單利模式:**確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項,這個類稱為單例類,它提供全 局訪問的方法。單例模式是一種物件建立型模式。
三個要點:
1、單例類只能有乙個例項。
2、單例類必須自己建立自己的唯一例項。
3、單例類必須給所有其他物件提供這一例項。
使用方法:
在單例類的內部實現只生成乙個例項,同時它提供乙個靜態的getinstance()工廠方法,讓客戶可以訪問它的唯一例項;為了防止在外部對其實例化,將其建構函式設計為私有;在單例類內部定義了乙個singleton型別的靜態物件,作為外部共享的唯一例項。
(1)懶漢單利模式:
執行緒不安全,多執行緒下會建立兩個物件; 在第乙個執行緒進來後,還未將位址值賦值給mysigleton,第一線程結束,
第二線程仍然可以進來建立了兩個物件;
class mysigleton
//提供乙個全域性的訪問點
public static mysigleton getinstance()
return sigleton;
}}
(2)懶漢單利模式的幾種變種以及存在的問題:
class mysigleton
// 提供乙個全域性訪問點
public static mysigleton getinstance()
}**第二種:**
// 在單執行緒下效率不高,反覆進鎖出鎖(得進鎖之後才能知道不能建立新的物件)
synchronized (lock)
}**第三種:**
// 多執行緒下會建立兩個物件;
/*在第乙個執行緒進來後,還未將位址值賦值給mysigleton,第一線程結束,第二線程仍然可以進來
建立了兩個物件
*/if (mysigleton==null)
return mysigleton; //返回唯一的乙個物件
}}
(3) 餓漢單利模式:
// 餓漢式單例模式
class mysigleton2
//提供乙個全域性的訪問點
public static mysigleton2 getinstance()
}
(4) 靜態內部類實現單利模式:
// 因為靜態內部類課以定義靜態變數和方法
class mysingleton3
// 只有訪問靜態內部類才會建立物件
private static class signleton
public static mysingleton3 getmysingleton3()
}
(5)雙重校驗鎖
class mysigleton
// 提供乙個全域性訪問點
public static mysigleton getinstance() }}
return mysigleton;
}
(5)列舉實現單利模式:
public enum singleton
}
Java設計模式 單利模式
設計模式 是一套被反覆使用,多數人知曉,經過分類編碼目的,設計經驗的總結。目的 使用設計模式是為了提高 重用性,讓 更容易讓人理解,並保證 的可靠性。單利模式 顧名思義就是只能有乙個例項,不能再出現第二個,就如同地球上沒有兩片一模一樣的樹葉一樣。在此處即,乙個類只能有乙個實力,且整個專案都能訪問該例...
java設計模式之單利模式
在我們做開發的時候,有些類的例項每次都new乙個出來是沒有必要的,因為它太占用記憶體咯。因此,單利模式有了它的用武之地了。最簡單的單利模式如下 private static logcathelper instance null public static logcathelper getinstan...
Java設計模式(三) 單利模式
單利模式分為餓漢式和懶漢式,但無論是哪種模式,都是對類的物件來說的,建立類的乙個物件。餓漢式 類載入時就建立物件。懶漢式 需要的時候才建立物件。建立的步驟基本一致 私有化構造方法 定義乙個變數,並私有化 對外提供乙個可以公開獲取物件的方法 public class teacher private s...