2013-07-02 47 views
0

我有以下的DataSource類:SmartGWT的DataSource.destroy()和娛樂

public class MyDataSource extends DataSource { 

private static MyDataSource instance; 
private static final String COLUMN_ONE = "One"; 
private static final String COLUMN_TWO = "Two"; 

public static MyDataSource getInstance() { 
    if (instance == null) { 
     instance = new MyDataSource("ID"); 
    } 
    return instance; 
} 

private MyDataSource(String id) { 
    setDataProtocol(DSProtocol.CLIENTCUSTOM); 
    setDataFormat(DSDataFormat.CUSTOM); 
    setClientOnly(false); 
    constructDataSource(id); 
} 

private void constructDataSource(String id) { 
    setID(id); 
    DataSourceTextField one = new DataSourceTextField(COLUMN_ONE); 
    DataSourceTextField two= new DataSourceTextField(COLUMN_TWO); 
    setFields(one, two); 
} 

// and the rest of the class 

}

我通過MyDataSource ds = MyDataSource.getInstance();並在一些行動創建另一類這個類的一個實例,我需要銷燬並重新創建它。我做ds.destroy(); ds = MyDataSource.getInstance();,但我注意到instance在銷燬後不爲空,所以基本上第二次調用MyDataSource.getInstance();正在將舊對象返回給我。我怎樣才能銷燬這個實例?

回答

0

您的數據源遵循單例模式。您不是「創建此類的實例」,因爲靜態getInstance方法始終返回相同的實例。我不知道如何在com.smartgwt.client.core.BaseClass中實現destroy(),但是如果您想銷燬您的數據源,也許應該覆蓋此方法並將instance設置爲null。這將強制在getInstance方法中創建新實例。