デスクトップアプリケーションでは、たとえば都市のモデルを開発しています。
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パターンを誤解しているように感じます。