>>6
Flyweightという名称を使ったのは、こういう仕掛け(class Factory {})を一言で
伝達する事が可能だと思ったからだけど、それは間違いでした。
それは認めます。ごめんなさい。

class Factory {
 private static Factory singleton = new Factory();
 private Factory() {}
 private Map map = new HashMap();
 public Factory getInstance() { return singleton; }
 public Object getTarget(String target) {
  Object obj = map.get(target);
  if (obj == null) {
   obj = (Object)(Class.forName(target).newInstance());
   map.put(target, obj);
  }
  return obj;
 }
}