各状態における振る舞いを記述した状態オブジェクトを導入する。状態によって変化する振る舞いをクラス内に記述する必要がなくなり、状態オブジェクトに処理を任せることができるようになる。
オブジェクトの内部状態の変化に応じて振舞いも変えられるようにする。
状態とそのときの動作を持つインターフェースをすべての状態クラスが持ち、それらを利用する。
「行為者」から、「状態」と「行為の結果」を切り離す。
ペイントソフト使うとき、行為者はペンの状態を切り替えて、マウスを動かすだけ。状態と結果はセットで、状態が筆だったら筆の結果で筆の線が書かれる。
赤ペンだと赤色の線が書かれる。