Java FAQ:インスタンス生成を制限する方法
Java FAQ:S010 Q-04
ほぼ、まんま
class C2008041501 { private static C2008041501 instance = new C2008041501(); private C2008041501() { } public static C2008041501 getInstance() { return instance; } } public class C2008041500 { public static void main(String[] args) { C2008041501 c; c = C2008041501.getInstance(); System.out.println(c); c = C2008041501.getInstance(); System.out.println(c); } }
で、
C2008041501@5ff48b C2008041501@5ff48b
class C2008041511 { private static java.util.Dictionary table = new java.util.Hashtable(); private String name; private C2008041511(String name) { this.name = name; } static C2008041511 getInstance(String name) { if (table.get(name) != null) { return (C2008041511)table.get(name); } else { C2008041511 foo = new C2008041511(name); table.put(name, foo); return foo; } } } public class C2008041510 { public static void main(String[] args) { C2008041511 c; c = C2008041511.getInstance("foo"); System.out.println(c); c = C2008041511.getInstance("foo"); System.out.println(c); c = C2008041511.getInstance("bar"); System.out.println(c); } }
で、
C2008041511@5ff48b C2008041511@5ff48b C2008041511@affc70