單例設計模式:
解決乙個類在記憶體只存在乙個物件。
想要保證物件唯一
1,為了避免其他程式過多建立該類物件。先禁止其他程式建立該類物件
2,還為了讓其他程式可以訪問到該類物件,只好在本類中,自定義乙個物件。
3,為了方便其他程式對自定義物件的訪問,可以對外提供一些訪問方式。
這三部怎麼用**體現呢?
1,將建構函式私有化。
2,在類中建立乙個本類物件。
3,提供乙個方法可以獲取到該物件。
對於事物該怎麼描述,還怎麼描述。
當需要將該事物的物件保證在記憶體中唯一時,就將以上的三步加上即可。
//單例設計模式
class student
;
private static student s=new student();
public static student getinstence()
/*下面與平時沒有區別*/
private int age;
public void setage(int age)
public int getage() }
class studentdemo
}//輸出:age=20
上面是一種被稱為」餓漢式「的單例設計模式----------------類一被載入就建立物件(堆中就有物件)。
下面還有一種被稱為「懶漢式」的單例設計模型-------------類載入時,方法區有一變數s=null(此時堆中無物件),只有當方法被呼叫時才建立堆中物件,故也叫物件的延時載入。
/*懶漢式單例設計模式*/
private student(){};
private static student s= null;
public static student getinstence()
雖然懶漢式看起很美,但是推薦使用餓漢式,因為懶漢式在多執行緒容易出現問題,而單純的加鎖會使效率很低,除非使用雙重判斷。具體在多執行緒中在**。
Java設計模式 單例模式(餓漢式 懶漢式)
單例模式 所謂單例模式,從字面意思上來講就是只有乙個例項物件。特點 單例類只能有乙個例項。單例類必須自己建立自己的唯一例項。單例類必須給所有其他物件提供這一例項。單例模式必須確保只有乙個例項化物件,而且自行提供例項化並提供公共的獲取例項化物件的方法。餓漢式 餓漢式單例模式 class eager 提...
java單例設計模式 餓漢式與懶漢式
推薦使用餓漢式,二者區別在於 從實現方式來講他們最大的區別就是懶漢式是延時載入,他是在需要的時候才建立物件,而餓漢式在虛擬機器啟動的時候就會建立。public class singletondemo class singleton1 public static singleton1 getinsta...
Java中的設計模式 單例模式(餓漢式)
一套優秀 的設計經驗總結。它是特定場景下特定問題的處理方法。重用設計模式和 提高擴充套件性 大量使用面向介面程式設計,預留擴充套件位 專案擴充套件的原則 對修改關閉,對新增開啟,也叫開閉原則 提高靈活性,降低耦合度。提高開發效率,節省大量的時間。乙個類只能由乙個例項物件,乙個類只能有乙個物件,但是要...