Enum Factory Pattern

Enum Factory Pattern

列挙型を使ったFactory Method パターン。列挙型はとても使い勝手があるんだけど、これはその好例じゃないでしょうか。実は自分でも似たようなことをやろうと思って検索したら、すでにパターンとして名前が付いていた。みんな考えることは同じかあ。Strategy パターンとの組み合わせで、かなり使えると思います。

使いまわせるようなユーティリティ型のインスタンス生成なら、列挙する際にやっちゃっても良いかもしれない。

public enum Distribution {
    NORMAL("Normal", new NormalGenerator());
    private String name;
    private DistributedGenerator generator;
    private Distribution(String name, DistributedGenerator generator) {
        this.name = name;
        this.generator = generator;
    }
    public DistributedGenerator getGenerator() {
        return this.generator;
    }

ここでは、列挙ごと(NORMAL)に生成される generator がシングルトン扱いになるので、逆にそういったニーズに対しては有効なアプローチになるのでは。一般的な Strategy パターンの実装なら、例のページに掲載されているやり方の方が間違いがなくて良いと思うけど。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/500