Fumiのブログ

Stateパターン

現在開発しているプログラムで、 モードによって使用できる機能を分割したいと考えていた時に、 デザインパターンで何かいいのないかなぁっと思って調べた時に出会ったのがこちらの「Stateパターン」でした(∩∀`*)

今回はこの「Stateパターン」について説明を…しません(笑)

その代わりに、私が参考とした記事を紹介します。 その記事がこちら↓

「State パターン | TECHSCORE(テックスコア)」 そして、

上記の記事はJavaで書かれているのですが、それをC++で実装し直したというのが今回の話です(笑)

どういう内容の話をコーディングしているかは、上記の記事でご確認ください。

まず、これがユーザが呼び出す上位レイヤーの「StatePatternYumichan」クラス。

※由実ちゃんというのは上記のサイトから受け継いでいるだけで、なぜ由実ちゃんなのかは知りません。

 

そして、こちらが由実ちゃんの気分によって受け答えの基底となる「State」クラス。

 

 

こちらが通常時の受け答えをする「OrdinaryState」クラス。

 

 

こちらが風邪をひいた時の受け答えをする「BadMoodState」クラス。

 

 

 

そして最後に、実際に使用するとしたらこんな感じ。

 

 

ソースコードはGitHubでも公開しています。最新のコードはGitHubでご確認ください。 fantm21/PublicCode/DesignPattern/DesignPattern/StatePattern/