私は以下に示すコードを書きました:
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(スペイン語)の両方で同じサイトマップを返したいです。そのため、スペイン語版と英語版の両方の米国サイトマップをインスタンス化しています(サードパーティベンダーが英語ページをスペイン語に変換しています)。サイトマップをインスタンス化する方法は、シングルトンを使用しています。シングルトンオブジェクトは次のように作成されます。
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
}
}
私の質問は、同じシングルトンオブジェクトを2回再利用できますか?シングルトンオブジェクトをインスタンス化する有効な方法ですか?