2010-11-19 55 views
1

在我正在开发的项目中,我们刚刚开始使用Flex 4.我们不使用任何特定的框架,并且管理需要全视图/分离体系结构。基本原则是每次将ActionScript类作为模型关联到.mxml视图。Flex4 - 编码体系结构,视图/模型分离

我很难理解如何将两者联系起来:谁引用了谁,以及我在视图中可以在多大程度上消除脚本部分。

我真的很感谢这一个的任何见解。

谢谢

回答

1

您还可以使用“Presentation Model”模式,它与Silverlight世界中的MVVM非常相似。不同之处在于,在Flex中,Silverlight需要更多的管道,这非常容易。

架构是这样的:

  • 的视图仅仅是一个视图。所有声明...很少势在必行代码
  • 表现模型(PM)包含UI行为和胶水到模型
  • 该模型包含的数据,服务和客户端业务规则

观引用PM并将数据绑定到PM中的属性。 PM包装模型并添加UI级验证,UI级行为和格式数据。

“分居提示模式” 像PM,MVC和MVP是下面的 “ilities” 真的很重要:

  • 单位可测性
  • 可设计
  • 可维护性
  • 迁移性(浏览器航设备...等等)
+0

谢谢,看起来这个解决方案与我们正在采用的架构非常相似。如果我理解正确,我需要有一个模型的属性映射视图中的每个控件,并直接将这些控件的任何更改分配给属性? – Sandy 2010-11-19 12:51:08

+0

其他问题:在PM模型中,一旦您开始让其他自定义子组件拥有自己的模型,您如何在没有控制器的情况下管理它们之间的通信? – Sandy 2010-11-19 13:00:56

+0

因此,如果我正确理解你的问题,我经常将模型作为PM的公共属性,以便在无需适应视图时直接绑定到模型中的道具。对于需要适应视图的事情,我创建自定义获取器来进行自适应。就PM之间的通信而言,您可以使用通用模型......或者您可以使用某种事件总线。我使用轻量级Inversion of Control容器将模型和事件总线注入到PM中。 – 2010-11-19 13:19:58

1

通常,模型应该几乎不包含任何逻辑。视图包含显示模型提供的数据的逻辑。这样的视图访问模型,而不是相反。这也可以为同一组数据定义多个不同的视图。

在Flex中,数据绑定和内容提供者都是将数据集成到MXML结构中的好方法。尤其是数据绑定,您可以在不考虑它的情况下使用内容;特别是没有自己定义所有的引用(所以你不需要在代码中写这些引用)。

要消除视图中的其余逻辑,通常在MVC体系结构中使用控制器。控制者是视图和模型之间的一些“中间人”,并且应该处理这些数据。所以你的应用程序使用的所有逻辑都应该在那里。这样你就可以严格区分模型(只包含纯数据),视图(只显示数据)和控制器(将它们集中在一起并添加应用程序逻辑)。有关该主题的更多信息,请参阅Wikipedia article

作为最后一点,有一些框架使MVC更容易管理。 ActionScript最为人所知的可能是RobotLegs

+0

不应该是对逻辑内容的另一种方式吗? 我的意思是不应该模型定义如何显示视图? – Sandy 2010-11-19 10:54:32

+0

@Sandy:不。模型应该是不可知的。它不应该真的知道一个观点存在。如果你在你的模型中有观点概念,那么你可能做错了。这就是MVC中的“控制器”,MVP中的“演示者”或“演示模型”用于...了解View存在并便于模型数据与/从视图显示/修改。 – 2010-11-19 11:07:13