模型视图控制器-编写粘合代码时的最佳实践



我问这个问题是为了获得对粘合代码主题的一些意见。

例如,假设您有一个类(伪代码):

class MyClass
    int attribute a
    string attribute b

为了表示该数据模型,您有一个滑块和一个文本框来表示,还有一个文本盒来表示。。。表示b.的窗口标签

显然,当其中一个视图对象发生更改时,您希望更新其他视图对象。但是,更新整个视图显然效率低下。

method onSomethingHappened(uiObject)
    model.appropriateAttribute = uiObject.value

问题是,你对下一步该怎么做有什么看法?如果模型对象实现了一个回调,当值发生更改时,该回调会通知侦听器,从而允许编写如下粘合代码:

method modelChangedCallback(model, attribute)
    uiObject1.value = model.a
    uiObject2.value = model.a

您可以在哪里检查更改的属性,并做出相应的响应?在大多数情况下,这是Objective-C和Mac上的Cocoa中的模型。

或者,你宁愿让责任完全在于粘合代码吗?

method onSomethingHappened(uiObject)
    model.appropriateAttribute = uiObject.value
    self.updateForAttribute("appropriateAttribute")

当您的项目变得很大时,这两种方法都会变得非常棘手(粘合代码的问题也是如此)。也许还有其他方法。你觉得怎么样?

感谢您的意见!

对我来说,我认为这归结为需要行为的地方。在您描述的情况下,将多个控件绑定到一个属性是驱动需求的原因,因此向模型中添加代码来支持这一点是没有意义的。

在基于web的模型中,我可能会将逻辑放在网页中,因为使用Javascript可以以相当低的成本完成。如果我没有这种奢侈(即,我正在处理一个"愚蠢"的视图),那么在控制器或模型粘合代码中这样做可能是有意义的。如果这种事情变得足够常见,我可能会创建某种形式的通用帮助程序,以减少我必须处理的锅炉板代码的数量。

相关内容

  • 没有找到相关文章

最新更新