[Design pattern] 3-6. ステートパターン(State pattern)
こんにちは。明月です。この投稿はデザインパターンのステートパターン(state pattern)に関する説明です。ステートという意味では状態です。つまり、クラスの状態により処理する結果が別々になる意味です。よく見るとストラテジーパターンと似ている構造になりますが。。。差異を置いたらストラテジーパターンはストラテジーインスタンスにより外部の値が変わることだし、ステートパターンはステートインスタンスにより内部の値が変わることだと思います。実は、デザインパターンというのは実務でこれはこのパターンという定義されていることではなく、その内容だけ理解して使ったら良いでしょう。reference - https://en.wikipedia.org/wiki/state_patternストラテジーパターンには多分、run関数に何かの値を受け取ります。つまり、run関数で値を受け取ってストラテジーパターンにより別の値がリターンすることだし、ステートパターンはrunの関数で値を受け取ることではないですが、ステートインスタンスにより内部処理が変わったということです。私が知っているストラテジーパターンとステートパターンの差異はこれです。実は私も実務でストラテジーパターン、ステートパターンを区切りして使うことではありません。ただ仕様に合わせてパターンを使うことで。。ステートパターンもストラテジーパターンと同じ構造でflyweightパターンを使ってステートパターンのインスタンス生成を最小化にしました。そしてインスタンスの再使用率を高めにしてシステムの性能を上げられます。ステートパターンもストラテジーパターンと同じ目的で使います。クラスの結合度を低くして再使用率を高めにするために使うでしょう。ただ、その差異はストラテジーパターンは外部の値がパターンにより別々の結果を出すこと、ステートパターンはパターンにより内部値が別々の結果を出すことです。ここまでデザインパターンのステートパターン(state pattern)に関する説明でした。ご不明なところや間違いところがあればコメントしてください。