我编写了如下所示的代码:
public class SiteMapFactory {
public static ISiteMap getSiteMap(Locale loc) {
ISiteMap returnMap = null;
if (loc.equals(Locale.US)) {
returnMap = SiteMap_en_US.getInstance();
}
if(loc.equals(new Locale("es","US"))){
returnMap = SiteMap_en_US.getInstance();
}
if(loc.equals(Locale.CANADA)){
returnMap = SiteMap_fr_CA.getInstance();
}
return returnMap;
}
}
我想为我们网站的 en_US(英语)和 es_US(西班牙语)返回相同的站点地图。所以我正在为西班牙语和英语版本实例化美国站点地图(第三方供应商正在将我们的英语页面转换为西班牙语)。站点地图的实例化方式是使用singleton。单例对象创建如下:
public class SiteMap_en_US extends SiteMapTree {
private static SiteMap_en_US m_instance;
private SiteMap_en_US() {}
static {
m_instance = new SiteMap_en_US();
m_instance.init();
}
public static SiteMap_en_US getInstance(){
return m_instance;
}
@Override
protected void init() {
//some code
}
}
我的问题是:我可以重复使用同一个单例对象两次吗?这是实例化单例对象的有效方法吗?