Eyes, JAPAN Blog > Stateパターン

Stateパターン

makuta

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

State とは、英語で「状態」を意味する単語です。 オブジェクト指向設計では、モノをクラスとして表現することが多くあります。State パターンとは、 モノではなく「状態」をクラスとして表現するパターンです。

状態によって、動作のパターンが変わることがよくあります。
例えば、「機嫌のいい状態」「機嫌が悪い状態」の2つの状態があるお母さんにいくつか頼みごとをすることを考えます。機嫌のいい状態のお母さんに「お小遣い頂戴」「おやつ頂戴」などのお願いをした場合、「はいはい」といってお小遣いをくれたり、おやつを出してくれたりするでしょう。しかし、機嫌の悪い状態のお母さんにこれらのお願いをしても聞き入れてくれないかもしれません。お母さんは機嫌(状態)によって、振る舞いが変わるわけです。

通常、条件 (状態) に一致するかどうかの処理は、if 文を使用し, コーディングするのですが、
・その条件分岐が多い
・1つの条件で処理するコード量が多い
・同じ条件分岐が複数の個所に点在する
などの場合の時は、メンテナンスしづらいものとなってしまいます。しかし、このStateパターンを適用すると、その状態を個々のクラスで表現するため、単純明快となります。

このパターンでは、ある物についての各状態をそれ対応した各クラスで表現します。つまり、 状態一つにつき、クラス1つで表現をするのです。
このようにState パターンは、状態の変化に応じて振る舞いが変わるような場合に威力を発揮します。

  • このエントリーをはてなブックマークに追加

Comments are closed.