0

デスクトップアプリケーションでは、たとえば都市のモデルを開発しています。

class City(object):

    def __init__(self, name, population):
        self._name = name
        self._population = population

そして、そのプライベートプロパティを変更するためのeditメソッドを実装したいと思います。ユーザーが新しい値を書き込めるように、テキスト入力フィールドのあるウィンドウを開くという考え方です。それをテスト可能にして分離するために、私は次のようにしました:

# Within City class
def edit(self, get_properties_function=None):
    """
    Edit properties. Don't pass get_properties_function except for testing
    """

    if get_properties_function is None:
        get_properties_function = self._get_city_properties

    new_name, new_population = get_new_properties()

    self._name = new_name
    self._population = new_population

def _get_city_properties(self):

    # launch GUI and get the new values

    return new_name, new_population

今の質問:

  • 情報を求めるダイアログはビューですよね?次の質問に私を導きます
  • 意見があれば、さらに進んでコントローラーの実装を検討する必要があると思います。では、ここでMVCを実装する方法は?

私のアイデアは、3つのクラス(MVC)を用意することです。「都市の概念」をインスタンス化するたびに、モデルだけでなく、ビューとコントローラーもインスタンス化します。そして、コントローラーは「都市」のパブリックインターフェイスになります。これはやり過ぎ、複雑すぎるように聞こえます。

Webプログラミングのせいで、実際のMVCパターンを誤解しているように感じます。

4

1 に答える 1

-1

----- 更新 ----
テレシュコが言ったように、コントローラーはモデルから読み取られません。ウィキペディアで定義された関係http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

----- オリジナル ---
あなたclass Cityはモデルで、ダイアログはビューなので、コントローラは何ですか。

「モデル編集」を処理するには、別のクラスが必要だと思います。

コントローラーによって提供されるすべてのダイアログのデータは、class city.

私は自分の意見をデータフローで説明しようとしています。

起動、ウィンドウ表示(ダイアログ?)
View -> (データ取得) Controller -> (プロパティ読み込み) Model
View <- Controller <- Model (データを返す)

データを変更したい
View -> (変更されたデータを送信) Controller -> (モデルデータを更新) -> Model
View <- Controller <- Model (ダイアログ表示が更新された)

于 2013-03-14T11:49:52.473 に答える