列挙型を使った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
