單例
所謂單例設計模式,即時采取一定的方法保證在整個軟件系統當中,對于某個類只能存在一個對象實例,并且該類只提供一個其對象實例的方法(靜態方法)
惡漢式
優缺點說明:
-
優點:這種寫法比較簡單,就是在類裝載的時候就完成實例化.避免了線程同步問題
-
缺點: 在類裝載的時候就完成了實例化,沒有達到Lazy Loading的效果.如果從始至終都沒有使用過這個實例,就會造成內存的浪費
-
這種方式基于ClassLoader機制避免了多線程同步問題,不過,instance在類裝載的時就實例化,在單例模式中大多數都是調用getInstance方法,但是導致類裝載的原因有很多種,因此不能確定有其他方式(或者其他靜態方法)導致這個類被裝載,這時候初始化instance就沒有達到lazy loading的效果
-
結論: 這種單例模式可用,可能 造成內存浪費
代碼演示
package com.atguigu.principle.singleton.type1;/***/
public class SingletonTest01 {// 1. 構造器私有化,外部不可以newprivate SingletonTest01() {}// 2. 本類內部創建對象實例// 惡漢破不及待 new 這個 對象private final static SingletonTest01 instance = new SingletonTest01();// 3. 提供一個工友的靜態方法,返回實例對象public static SingletonTest01 getInstance() {return instance;}
}更多:[http://victorfengming.gitee.io/design_pattern/](http://victorfengming.gitee.io/design_pattern/)