我有一個對象說A
從磁盤加載一些數據,它需要一點點時間加載。許多其他的對象需要它的方法和數據,所以我不希望任何時候我需要它創建一個新的,也沒有通過類的構造函數傳遞它。有沒有辦法在運行項目開始時只創建一次類A
的實例,並且所有其他對象都可以訪問對象A
?如何從其他對象訪問特定對象而不傳遞指向該對象的指針?
如果我的問題重複,我很抱歉,但我不知道什麼關鍵字與這個問題有關,以找到相關的問題。
我有一個對象說A
從磁盤加載一些數據,它需要一點點時間加載。許多其他的對象需要它的方法和數據,所以我不希望任何時候我需要它創建一個新的,也沒有通過類的構造函數傳遞它。有沒有辦法在運行項目開始時只創建一次類A
的實例,並且所有其他對象都可以訪問對象A
?如何從其他對象訪問特定對象而不傳遞指向該對象的指針?
如果我的問題重複,我很抱歉,但我不知道什麼關鍵字與這個問題有關,以找到相關的問題。
在你正在處理的Singleton Design Pattern這種情況下,你應該申報的youre類是這樣的:
public class SingleObject {
//create an object of SingleObject
private static SingleObject instance = new SingleObject();
//make the constructor private so that this class cannot be
//instantiated
private SingleObject(){}
//Get the only object available
public static SingleObject getInstance(){
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
然後您可以按預期使用它。
其實這裏的方法是使用static
成員如下:
public class Vehicle {
private static String vehicleType;
public static String getVehicleType(){
return vehicleType;
}
}
的
static
修改允許我們使用類名本身來訪問變量vehicleType和方法getVehicleType()如下:
Vehicle.vehicleType
Vehicle.getVehicleType()
看看一個t Java static class Example瞭解更多信息。
當然。設計模式被稱爲單例。它看起來是這樣的:
public class Singleton {
private static Singleton instance;
private Singleton() {}
/*
* Returns the single object instance to every
* caller. This is how you can access the singleton
* object in your whole application
*/
public static Singleton getInstance() {
if (Singleton.instance == null) {
Singleton.instance = new Singleton();
}
return Singleton.instance;
}
}
所有對象都可以使用單通過調用Singleton.getInstance()
請注意,單例模式的實現不是線程安全的 - 有各種更好的。詳細信息請閱讀Effective Java。 –
你在尋找'Singleton Object'嗎? –
你正在尋找[Singleton模式](http://stackoverflow.com/questions/70689/what-is-an-efficient-way-to-implement-a-singleton-pattern-in-java) – Glorfindel
是我認爲這意味着一個單身人士,但我不確定。我不想通過我的項目實例化那麼多對象 – user3070752