んーと、なんかよくわからないので整理してみる。
状態とかタイプとかで、処理が分岐するときに使うパターン。
・状態の数が固定・可変(後から追加)。
数が固定の場合は、当然Enumで表現できる。
数が可変の場合は、クラスの継承で表現する。
数が固定っていっても、状態の数が変わるかも!とか考え出すとEnum使えないんだよね。
ここで言う追加って言うのは、他の人が追加するってこと。
自分で追加……は、えっと、許されるんだよね?(汗)
Enumの拡張とか継承みたいなのってあり得ないのかなぁ。
話を戻すと……、処理を状態に含めないなら上だけで済むんだけど、
実際には、処理も放り込みたいんだよね。
というわけでさらに以下の場合によって実装ってかわるっとφ(。。
・状態別の処理が固定・可変(?)。
数が固定で、状態別の処理が固定なら、当然Enumに放り込むよね。
数が可変で、状態別の処理が固定なら、状態別のクラスに実装すればOK。
数が可変で状態別の処理が可変の場合は、状態と処理を分離して実装すればOK。
問題は数が固定で状態別の処理が可変……って、これは数は固定だけど、実はEnumにするものじゃないんだよね、きっと。
うーん、なんか抽象的な話だなぁ……。
まとめると
状態数が固定なら、Enum。ただし状態数が拡張可能な場合はEnumジャダメ。
処理が可変な場合は、Strategyパターン?で分離しておくって感じ?
2008年08月02日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/17540939
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/17540939
この記事へのトラックバック