WEB±DB PRESS Vol.130 特集1 実践データモデリングのサンプルコードです。
example.complexパッケージのクラスは注文の複数の状態をOrderStatus
enumを使って、Order
クラス1つで表現しています。
状態ごとに不変条件や振る舞いが異なる場合、Order
は状態のチェックが増え、ある振る舞いでは参照も更新もしない状態変数を持つことがあります。
これを回避するための設計の1例として、注文の状態ごとにクラスを分けたものをexample.simpleパッケージに置いてあります。 この設計では、1つのクラスには適用可能な振る舞いしか定義していないので、そのメソッドが呼べるかどうかのチェックが不要になります。