Edited at

Observer Patternを用いた簡素なMVCのpython実装例

More than 1 year has passed since last update.


やること


  1. Viewはコンソールから入力されたテキストをControllerに渡す

  2. Controllerは入力されたテキストをModelに書き込む

  3. オブザーバーパータンでModelの変更を検知してViewを更新する


コード

class Model:

def __init__(self):
self.__observer = None
self.__text = None

def add_observer(self, observer):
self.__observer = observer

def notify_observer(self):
self.__observer.update(self)

@property
def text(self):
return self.__text

@text.setter
def text(self, text):
self.__text = text
self.notify_observer()

class View:
def input(self):
return input("Enter text: ")

def update(self, model):
print(model.text)

class Controller:
def __init__(self):
self.model = Model()
self.view = View()
self.model.add_observer(self.view)

def start(self):
self.model.text = self.view.input()

if __name__ == '__main__':
Controller().start()


参考資料

やはりお前らのMVCは間違っている

やはりおまえらの MVC は間違えている in バックボーンジェーエス

「MVCの勘違い」について、もう一度考えてみる

実践Python3


最後に

おかしな点,不明な点ありましたら遠慮なく指摘して下さい.