次のような各シェイプ オブジェクトのフライウェイトを定義するシナリオを考えてみましょう。
public enum SHAPE {
TRIANGLE, RECTANGLE, SQUARE, HEXAGON;
}
そして、毎回これらすべての形状のオブジェクト作成が巨大であると仮定しましょう。DBに入り、コンストラクターでいくつかのデータを取得するとします。あなたがすること?
列挙キーと値を1回のオブジェクトとして使用してマップに保存し、列挙を使用して、次のようなものを試して呼び出すと言います。
public double calculateArea(SHAPE shape) {
Figure figure = map.get(shape);//you dont create object but take it from a map
return figure.calculate();
}
EnumSet の場合、次のような基本的な色の列挙があると考えてください。
enum COLORS {
RED, BLUE, GREEN
}
ここで、たとえば YELLOW Color を作成し、その INGREDIENTS を知りたい場合は、GREEN と RED のような 2 つの色で EnumSet を使用できます。同様に、色の要件に従って、複数のセットをバリエーションで保存できます。
これは単なる例ですが、count を追加して、RED、BLUE、GREEN のピクセルのバリエーションがどれだけ必要かをより複雑にすることもできます。