所謂單例模式,主要是為了解決,java對象有且隻有一個,本質就是構造方法私有化,
單例模式:主要是為了節省記憶體空間,缺點是不能被繼承,因為構造方法私有化了,外部的程式不能被調用了,
* 懶漢模式:構造方法私有化,
* 第一步:講所有構造方法私有化,目的是讓外部程式不能被調用,然後建立了一個方法,用來供外部程式調用
* */
public class Customer {
/*單例模式:主要是為了節省記憶體空間,确定是不能被繼承,構造方法私有化,外部
* 程式不能調用構造方法,隻在記憶體當中
* 懶漢模式:構造方法私有化,
* 第一步:講所有構造方法私有化,目的是讓外部程式不能被調用
* */
private static Customer c;
private Customer(){}
//對外提供了一個公開的擷取customer類型對象的方法
public static Customer getInstance(){
if(c==null){
c=new Customer();
}
return c;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Customer c1=Customer.getInstance();
Customer c2=Customer.getInstance();
System.out.println(c1==c2);
}
}
列印結果: true
餓漢模式: 在類加載的階段就已經建立這個對象了,
/*餓漢模式*/
public class Customer{
//靜态變量
private static Customer c=new Customer();
//單例模式第一步:講所有構造方法私有化,
// 目的是:讓外部程式不能,直接調用構造方法建立對象
//因為隻要構造方法執行,就會有一個新的對象誕生
private Customer(){}
// 對外提供一個公開的擷取Customer類型對象的方法
public static Customer getInstance(){
return c;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Customer c1=Customer.getInstance();
Customer c2=Customer.getInstance();
System.out.println(c1==c2);
}
}