Pythonデザインパターン

State Pattern in Python

State Pattern in Pythonを、編集してオンライン実行できる実践例で学びます。

State Patternとは?

State Pattern in Pythonを、編集してオンライン実行できる実践例で学びます。

どのような場面で使う?

  • 実績のある構造を使って、繰り返し発生するオブジェクト設計の問題を解決します。
  • 責務を分離し、コードを拡張・テストしやすくします。
  • チームでアーキテクチャを議論するときに共通の設計用語を使います。

サンプルコード

コードを実行 →
main.py
class Playing:
    # State: delegate behavior to the current state object.
    def action(self): return "Playing"


class Paused:
    def action(self): return "Paused"


class Player:
    def __init__(self): self.state = Paused()
    def set_state(self, state): self.state = state

    def action(self):
        # Behavior comes from the current state object.
        return self.state.action()


player = Player()
player.set_state(Playing())
print(player.action())
player.set_state(Paused())
print(player.action())

期待される出力

Playing
Paused

仕組み

この例ではState Pattern in Pythonを説明します。入力値を変更してコードの動作を確認してください。

値を変更し、PythonをインストールせずにCodeUtilityオンラインPythonコンパイラで実行できます。

練習問題

入力値と境界ケースを変更し、より大きなデータでも動作を確認してください。

  1. パターンの構造を保ったまま、サンプルの対象領域を置き換えてください。
  2. パターンをより単純な実装と比較し、トレードオフを説明してください。
  3. 別の実装を追加する前に、各参加要素のテストを書いてください。
Python IDEで実行 →