Flyweightパターン

Flyweight パターン - Wikipedia

重いクラスインスタンスは共有しましょうという考え。
共有すると、一カ所の変更がすべてに影響を及ぼすので注意が必要。

public class FlyweightFactory
{
    private Hashtable make_objs = new Hashtable();

    public FlyweightFactory(){}
    
    //共有するオブジェクト(この例ではItemクラス)はこのメソッドを使用して生成する。
    //Mementoパターンを使って、このクラスでのみnewができるようにするとよい。
    public Item getItem(String name)
    {
        if(make_objs[name] != null)
        {
            make_objs[name] = new Item(name);
        }
            return (Item)make_objs[name];
    }
}