0412デフォルトの名無しさん
2017/07/11(火) 19:51:06.41ID:ipR8z5Od実直に実装するとinvalid state exceptionを投げまくるかっこ悪いクラスになってしまう
class order {
public void decide() { // 保留中の注文を確定する
assert<invalid_state_exception>(_state == order_state::pending);
_state = order_state::ordered; }
public void cancel() { // 注文済みをキャンセルする
assert<invalid_state_exception>(_state == order_state::ordered;
_state = order_state::canceled; }
// 省略
}
もちろんこれは単純なサンプルで現実的にはもっと複雑なビジネスルールがある
Stateパターン使うのかなとも考えたけど結局空のメソッドからnot supported exceptionを投げるようになるだけで本質的な解決策にならない