dT*blog

design and programming

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 パターンの実装なら、例のページに掲載されているやり方の方が間違いがなくて良いと思うけど。

Posted by dT by 12:36 | Comments (0) | TrackBacks (0)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30