2014-06-06 137 views
-1

我從java開始,所以如果這聽起來很蠢,請耐心等待。這是否會陷入無限循環?

我想下面的代碼:

First.java

class First { 
    public static void main(String[] args) { 
     First f = new First(); 
     f.print(); 
    } 

    private void print() { 
     System.out.println("Hello, World!"); 
    } 
} 

main功能,我重新實例同一類,因爲我需要調用從非靜態方法在靜態主要方法內。

雖然這個工程,我想知道這是一個好辦法嗎?並創建了多少個f實例。

我如何確保f將是singleton

感謝

+1

Downvoting它是好的,但至少指出我的錯誤,所以我知道我在做什麼錯 –

+0

這將爲運行的程序工作,但沒有相關的Singleton設計模式。 –

+2

這將工作正常,創建一個f的實例。 – SpringLearner

回答

4

關於第一個問題:類First只有一個實例被創建。

關於第二個問題: 單例模式涉及使用私有構造函數和工廠方法。如果不使用getInstance工廠方法,則無法創建First的新實例,並且所有對getInstance的調用都將返回相同的實例。

class First { 

    private static First instance = null; 
    private First() {} 

    public static First getInstance() { 
     if (instance == null) { 
      instance = new First(); 
     } 
     return instance; 
    } 
} 

class Second { 
    public static void main(String[] args) { 
     First f = First.getInstance(); //Always the same instance of First. 
    } 
} 
+0

謝謝...這是有幫助的。 –