Python:如何实现MVC。是不是太过分了?甚至可能?
在桌面应用程序中,我正在为城市开发一个模型Python:如何实现MVC。是不是太过分了?甚至可能?,python,model-view-controller,Python,Model View Controller,在桌面应用程序中,我正在为城市开发一个模型 class City(object): def __init__(self, name, population): self._name = name self._population = population 我想实现一个edit方法来更改它的私有属性。其思想是打开一个带有文本输入字段的窗口,以便用户可以写入新值。为了使其可测试和解耦,我做了如下工作: # Within City class def edi
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?
您的
class-City
是模型,对话框是视图,那么什么是控制器
我认为您需要另一个类来处理“模型编辑”
您可以使用控制器提供的所有dialog数据,并远离class city
我试图通过数据流来描述我的观点
启动时,显示窗口(对话框?)查看->(获取数据)控制器->(读取属性)模型
查看(更新模型数据)->模型
视图是否意味着“城市”需要一个模型视图和控制器单元?如果是这样,如果你想举例说明一个“城市”,你会举例说明什么?控制器还是模型?当使用全MVC时,控制器是城市的“公共界面”吗?如果我需要检索模型的属性,我必须调用控制器来调用模型?在MVC设计模式中,控制器不从模型层读取。模型是一个层,而不是一个类。在您的示例中,
城市
实际上是一个,它是模型层的一部分,但不是模型。至于什么时候使用它。。MVC设计模式的目标是为面向对象的代码添加额外的约束,当自由形式的OO代码变得难以管理时(至少超过20k行),MVC模式非常混乱。大多数人都没有正确理解它,在不知道的情况下使用PAC模式。那么,我们对“模型”这个概念的理解是什么呢?域对象不是元素的模型吗?谢谢你的回答。我已经就这个问题写了一篇长篇小说。。假设你可以在示例中处理暴露于php代码的问题。尽管我仍然不了解MVC以及如何做到这一点,但你已经让我大开眼界:模型不是一个类。这种误解来自于使用php MVC框架(根本不是MVC),其中模型是类。感谢你的链接,这可能是我读过的最好的答案之一。请注意:这种误解实际上源于RubyOnRails。它最初的目的是作为一个原型框架,只是为了熟悉起见,对MVC模式使用了相同的名称。当人们开始将其用于其他领域时,问题就开始了。这种极端流行导致了其他语言中的各种克隆(基本上所有最初在2005-2008年间发布的web框架)。