0
0

Python UIアーキテクチャ編

Posted at

Python UIアーキテクチャ編(UI Architecture)

PythonのUIアーキテクチャについて解説します。

目次

  1. MVC(Model-View-Controller)
  2. MVP(Model-View-Presenter)
  3. MVVM(Model-View-ViewModel)

1. MVC(Model-View-Controller)
MVCは、アプリケーションをモデル(Model)、ビュー(View)、コントローラ(Controller)の3つのコンポーネントに分割するアーキテクチャです。

MVC.py
# 簡単な例
class Model:
    def __init__(self):
        self.data = "Hello, MVC!"

class View:
    def display(self, data):
        print(data)

class Controller:
    def __init__(self, model, view):
        self.model = model
        self.view = view

    def update_view(self):
        self.view.display(self.model.data)

model = Model()
view = View()
controller = Controller(model, view)
controller.update_view()  # Output: Hello, MVC!

2. MVP(Model-View-Presenter)
MVPは、MVCに似ていますが、ビューの論理をプレゼンター(Presenter)に移すことで、ビューのテストを容易にするアーキテクチャです。

MVP.py
# 簡単な例
class Model:
    def __init__(self):
        self.data = "Hello, MVP!"

class View:
    def display(self, data):
        print(data)

class Presenter:
    def __init__(self, model, view):
        self.model = model
        self.view = view

    def update_view(self):
        self.view.display(self.model.data)

model = Model()
view = View()
presenter = Presenter(model, view)
presenter.update_view()  # Output: Hello, MVP!

MVVM(Model-View-ViewModel)
MVVMは、モデル(Model)、ビュー(View)、およびビューの状態とロジックを管理するビュー・モデル(ViewModel)で構成されるアーキテクチャです。

MVVM.py
# 簡単な例
# 簡単な例
class Model:
    def __init__(self):
        self.data = "Hello, MVVM!"

class ViewModel:
    def __init__(self, model):
        self.model = model

    def get_data(self):
        return self.model.data

class View:
    def display(self, data):
        print(data)

model = Model()
view_model = ViewModel(model)
view = View()
view.display(view_model.get_data())  # Output: Hello, MVVM!

最後までお読みいただきありがとうございました。

0
0
1

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
0