模式,一種套路,解決問題的固有方法:
1,餓漢式單例代碼:
class Person {
private static Person p = new Person();
private Person() {
}
public static Person getter() {
return p;
}
}
public class Demo1 {
public static void main(String[] args) {
System.out.println(Person.getter());
System.out.println(Person.getter());
}
}
2,懶漢式單例代碼:
class Student4{
private static Student4 s=null;
private Student4(){
}
public static Student4 getter(){
if(s==null){
s=new Student4();
}
return s;
}
}
public class DanLi{
public static void main(String[] args) {
System.out.println(Student4.getter());
System.out.println(Student4.getter());
}
}
因為對s先是賦值,后是創建對象對這個變量進行多次操作。懶漢式代碼有線程安全問題。
上面是單列模式的一段代碼,在之前我們寫代碼是,創建對象,創建的很爽,我們想創建幾個就創建幾個,但是在現實生活中這種做法是不合理的,就像玩游戲,你不可能想創建幾個對象就創建幾個。
分析:
我們通過static來限制對象的調用,因為static變量只能創建一次,在類加載后運行,所以通過static創建對象。
將構造方法私有化,可以讓你無法創建對象,無法搞事情。
最后通過getter方法讓main方法接收一下,你不能不讓人家一個對象都創建不了。