1

雲を生成するプログラムに flyweight パターンを適用しようとしています。雲の本質的な状態を表すクラスがあります。雲のタイプは、その属性によって定義されます。

class CloudType {
    float size;
    float altitude;
    String color;
    String texture;

   public void display(x, y) {}

}

class ConcreteCloud {
    float x;
    float y;
    CloudType cloudType;

    void display() {
        cloudeType.display(x, y);
    }
}

これらの特性を引数として取り、存在する場合は対応する CloudType のインスタンスを返す CloudType ファクトリを作成したいと思います。存在しない場合は、事前に作成して保存します。

class CloudTypeFactory {
    //  SomeContainer<CloudType> container;

    public CloudType getCloudType(float size, float altitude, String color, String texture) {
        CloudType instance = // container get corresponding cloudType
        if (instance == null) {
            instance = new CloudeType(size, altitude, color, texture);
            container.add(instance);
        }
        return instance;
    }

}

問題:

どのコンテナを使用するか、したがってアーキテクチャ自体について疑問があります。HashSet を使用することもできますが、検索の複雑さは CloudType の属性の数に比例するため、正しくないようです。私がオンラインで読んだ例では、作成者は CloudType の名前をキーとして HashMap を使用しています。

4

2 に答える 2