現在觀察以下的**:
class demo
public void print()
};
// 要求:例項化demo物件,同時呼叫print方法
public class demo08
};
此時,無法例項化物件,無法例項化物件就無法呼叫print方法。
class demo
public static demo getinstance()
public void print()
};
// 要求:例項化demo物件,同時呼叫print方法
public class demo08
};
分析:
為什麼要將構造方法私有化?
問:如果要限制乙個類物件產生,即:乙個類只能有乙個例項化物件,該怎麼做?
一例項化物件肯定要呼叫構造方法,如果將構造方法藏起來,則外部肯定無法直接呼叫,就肯定不能用new關鍵字呼叫構造方法例項。
要在內部使用。
class demo
public static demo getinstance()
public void print()
};
// 要求:例項化demo物件,同時呼叫print方法
public class demo09
};
所以此設計在系統中稱為單例設計(單態設計),在windows中也有此設計的存在。windows中的**站,所有的盤都共享同乙個**站,這就是乙個典型的單態設計。
如果在繼續深入,單態設計還分為兩種:
· 餓漢式:之前的設計就是餓漢式,因為物件一直存在。
· 懶漢式:在第一次呼叫的時候,才例項化物件,稱為懶漢式
class demo
public static demo getinstance()
return d ;
}
public void print()
};
// 要求:例項化demo物件,同時呼叫print方法
public class demo10
};
多例設計:
在類中會準備出多個物件,之後根據傳入的引數不同,可以返回不同的物件。
class demo
public static demo getinstance(int t)
return d1 ;
}else if(t==2)
return d2 ;
}else
}
public void print()
};
public class demo11
};
Java 構造方法私有化的作用
public class demo08 class demo public void print 此時,無法例項化物件,無法例項化物件就無法呼叫print方法。public class demo08 class demo public static demo getinstance public v...
構造方法私有化
本章目標 了解構造方法私有化的目的 掌握單態設計模式 構造方法私有化 類的封裝性不光體現在對屬性的封裝上,實際上方法也是可以被封裝的,當然,在方法封裝中也包含了對構造方法的封裝。例如 以下的 就是對構造方法進行了封裝。class singleton public void print 程式的意義 單...
私有化建構函式的作用
例如 public class diskutil public static func 這樣的類,往往提供一些靜態的函式來生成該類的例項,只要這個類有公開的屬性 方法,得到例項引用的一方還是可以呼叫的,乙個例子是singleton。外面呼叫只能呼叫diskutil 的靜態函式func,而不能a a ...