まぁ昔こんな事を書いた。
切っても切れない状態管理 - Life is Really Short, Have Your Life!!
フラグで状態を表してしまうとフラグの数だけ分岐が増えるのでうんこなので、基本的には値を書き換えていく形にしたらいいよね、というもの。プログラムが知っておくべき事は、「次に何をすればいいのか」だけなんだから、状態をオブジェクトにして追い出してコマンドを実行できる状態にすれば吉。新しい状態が増えても既存コードに与える影響は少なくできる。Stateパターンを導入しましょう、というこっちゃ。
ただONとOFFしかないものに限って言えば、0と1でいいんじゃないかしらとも思う。「読んだ・読んでない」とか「押した・押してない」とか「メール投げた・投げてない」とか、そういうもの。そのフラグがあるオブジェクトの中で完結できる状態を表す時ならば、フラグでコトが済みそうだなぁ、と。
まとめると、
そのフラグを元にキックするアクションが他のオブジェクトに影響を与えうるなら、値書き換えのStateパターン。
そのフラグがそのオブジェクトの中で完結し、他のオブジェクトの振る舞いに影響が無いなら、フラグ。
こんなんでどうでっしゃろ。