0

我有以下 DataSource 类:

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();是将旧对象返回给我。我怎样才能销毁这个实例?

4

1 回答 1

0

您的数据源遵循单例模式。您不是“创建此类的实例”,因为静态getInstance方法总是返回相同的实例。我不确定destroy()是如何实现的,com.smartgwt.client.core.BaseClass但是如果你想销毁你的数据源,也许你应该重写这个方法并设置instancenull. 这将强制在getInstance方法中创建一个新实例。

于 2013-07-03T11:50:21.973 回答