在桌面应用程序中,我正在为城市开发一个模型。
class City(object):
def __init__(self, name, population):
self._name = name
self._population = population
我希望实现一个编辑方法来更改其私有属性。我们的想法是打开一个带有文本输入字段的窗口,以便用户可以编写新值。为了使它可测试和解耦,我这样做了:
# 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
现在问题:
我的想法是有三个班级(M-V-C),每次我实施我的“城市概念”,我实例化模型,但视图和控制器也是如此。控制器成为“城市”的公共界面这听起来有点过分,过于复杂。
由于网络编程,我觉得我误解了真正的MVC模式。
答案 0 :(得分:-1)
-----更新----
正如tereško所说控制器没有从模型中读取。这段关系在这里定义维基百科http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
-----原创---
你的class City
是模型,对话框是可见的,所以控制器是什么。
我认为你需要另一个类来处理“模型编辑”。
控制器提供的所有对话框数据,并与class city
保持一致。
我试图通过数据流描述我的观点。
启动,显示窗口(对话框?)
查看 - > (获取数据)控制器 - > (阅读属性)模型
查看< - Controller< - 模型(返回数据)
您想修改数据
查看 - > (将修改后的数据发送到)控制器 - > (更新模型数据) - >型号
查看< - Controller< - 模型(您的对话框显示已更新)