5
A
回答
7
通過工廠Instanciate你的類(見設計模式),並使用簡單的計數器將其限制爲3個實例。
+0
簡單的靜態計數器並使工廠方法同步。 – 2010-03-10 17:14:20
2
您需要修改單例。看到這個 - 同樣的OOPS (Design Patterns)
1
工廠模式是要走的路。或者可以使用靜態計數器。需要注意線程安全。
1
你也可以看看Apache Commons的ObjectPool。的源代碼是免費提供...
7
我們可以限制在如下Singleton設計圖案通過稍加修改特定類對象的創建:
public class LimitClass {
private static LimitClass limInstance;
public static int objCount = 0;
private LimitClass(){
objCount++;
}
public static synchronized LimitClass getLimInstance(){
if(objCount < 3){
limInstance = new LimitClass();
}
return limInstance;
}
}
public class LimitObjectCreationTest {
public static void main(String[] args) {
LimitClass obj1 = LimitClass.getLimInstance();
LimitClass obj2 = LimitClass.getLimInstance();
LimitClass obj3 = LimitClass.getLimInstance();
LimitClass obj4 = LimitClass.getLimInstance();
LimitClass obj5 = LimitClass.getLimInstance();
LimitClass obj6 = LimitClass.getLimInstance();
System.out.println(obj1);
System.out.println(obj2);
System.out.println(obj3);
System.out.println(obj4);
System.out.println(obj5);
System.out.println(obj6);
}
}
的上面的代碼輸出是這樣的:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
創建三個不同的對象後,它會一次又一次地重複相同的第三個對象。它不是創造不同的對象。
0
爲什麼不分配limInstance = null;在其他情況下在getLimInstance()?在這種情況下,它不會提供obj3重複?
public static synchronized InstanceClass getLimInstance()
{
if(objCount < 3){
limInstance = new InstanceClass();
}
else
{
limInstance=null;
}
return limInstance;
}
public class LimitObjectCreationTest {
public static void main(String[] args) {
InstanceClass obj1 = InstanceClass.getLimInstance();
InstanceClass obj2 = InstanceClass.getLimInstance();
InstanceClass obj3 = InstanceClass.getLimInstance();
InstanceClass obj4 = InstanceClass.getLimInstance();
InstanceClass obj5 = InstanceClass.getLimInstance();
InstanceClass obj6 = InstanceClass.getLimInstance();
System.out.println(obj1);
System.out.println(obj2);
System.out.println(obj3);
System.out.println(obj4);
System.out.println(obj5);
System.out.println(obj6);
System.out.println(obj3);
}
}
結果是這樣的:
null
空
空
0
您需要修改單,並創建三個objects.ans寫三篇方法,每個方法返回的對象等作爲回報不同的三個對象並在需要時使用。它主要使用不需要將變量或對象聲明爲靜態,因爲始終返回相同的對象。
相關問題
- 1. 在java中創建超類的類型的子類對象
- 2. 在超類中創建對象
- 3. 如何限制對象創建
- 4. 如何在Excel中創建一個java類的對象vba
- 5. Java創建一個類的最多3個對象
- 6. 如何限制創建某些類的對象
- 7. 如何將對象創建限制到特定類的方法?
- 8. 限制admin中對象的創建
- 9. 限制用戶在Django中創建超過'n'個客戶admin
- 10. 的Java:創建類型的對象時,超類
- 11. 如何從java中的不同類創建對象
- 12. java在子類中創建對象
- 13. 如何在CFSCRIPT中創建Java對象?
- 14. 如何在Asp.net mvc 3控制器中創建Json對象?
- 15. 如何創建這個類的對象?
- 16. 兩個不同類的對象創建拋出Java中的StackOverflow
- 17. 重寫超類如何知道方法而不創建對象
- 18. 如何在類中創建對象?
- 19. 如何在動作類的JAVA中創建JSON對象
- 20. 如何在它的基類中創建一個子類對象?
- 21. 如何在使用JAVA的對象存儲中創建對象?
- 22. 創建子類對象是否也創建其超類的對象?
- 23. POST不會在Java中創建對象
- 24. 在Java中創建一個XML對象
- 25. 在java中創建多個對象oop
- 26. 如何在java中爲類創建動態對象?
- 27. 在java中創建另一個類的對象
- 28. 如何在java中將對象從超類獲取到子類?
- 29. 創建對象的Java中
- 30. Java:在B類中創建的類A中創建的訪問對象
您是否指的是erm三重設計模式?正如在一個給定的類中恰好有三個實例? – 2010-03-02 08:59:12
我不明白你的問題到底是什麼...... – romaintaz 2010-03-02 08:59:20
在某些課程中,它似乎是一個常見的作業/問題。我經常看到這個問題很多次(幾乎總是3),我還沒有看到這個限制的一個很好的理由。 – 2010-03-02 08:59:59