0
1

More than 1 year has passed since last update.

PythonでGoFデザインパターンのStateパターンを書く

Posted at

PythonでGoFデザインパターンのStateパターンを書く

はじめに

GoFデザインパターンのStateパターンは、オブジェクトの状態を変更するためのパターンです。これをPythonで実装することで、オブジェクトの状態を動的に変更することが可能になります。

実装

まず、基本的なStateパターンのクラスを定義します。

class State(object):
    def __init__(self):
        pass

    def handle(self):
        pass

次に、Stateパターンを使用するオブジェクトを定義します。

class Context(object):
    def __init__(self):
        self._state = None

    def set_state(self, state):
        self._state = state

    def get_state(self):
        return self._state

    def request(self):
        self._state.handle()

次に、異なる状態を表すクラスを定義します。以下は、状態が「A」と「B」の2つである場合を例としています。

class StateA(State):
    def handle(self):
        print("State A")


class StateB(State):
    def handle(self):
        print("State B")

最後に、これらを結合して使用するためのコードを書いていきます。

if __name__ == "__main__":
    state_a = StateA()
    state_b = StateB()

    context = Context()
    context.set_state(state_a)
    context.request() # State A

    context.set_state(state_b)
    context.request() # State B

このように、PythonでGoFデザインパターンのStateパターンを使用することで、オブジェクトの状態を動的に変更することができます。

応用例として、ゲームプログラミングなどの状態状態を変更していく場合などに使用することができます。

まとめ

以上が、PythonでGoFデザインパターンのStateパターンを書く方法です。Stateパターンを使うことで、オブジェクトの状態を動的に変更することが可能になります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1