模型 – 视图 – 控制器有什么替代select?
在大学期间,从开发SO开始,我就听说了很多关于Model-View-Controller的架构devise模式。 甚至在我知道它是什么之前,我无意中使用了MVC模式,并且仍然在我的日常工作中使用它。 从我所看到的,这可能是今天使用的最stream行的模式。 但是我还没有听说太多,可以使用替代模式来代替MVC。 有什么select,为什么你决定通过MVC使用它们? 我也很有兴趣知道他们所使用的典型系统的types。 最后,使用它们的优点和缺点是什么?
- 被动视图 – http://martinfowler.com/eaaDev/PassiveScreen.html
- 监督控制器 – http://martinfowler.com/eaaDev/SupervisingPresenter.html
- Model-View-Presenter – http://martinfowler.com/eaaDev/ModelViewPresenter.html
我个人最喜欢的是被动视图 。 比其他人更容易testing,包括MVC。
其他一些架构模式,包括MVC。
分层系统
TCP / IP
面向对象的组织
模型 – 视图 – 控制器 , 表示 – 抽象 – 控制 , 模型视图展示器和模型视图视图模型 。
例子是ASP.NET的MVC,Ruby on Rails和其他一些。
基于事件,隐式调用
浏览器环境(DOM)
pipe道和filter结构
Unixpipe道
库
表驱动的口译员
您也可以通过Garlan&Shaw在Software Architecture上find这篇文章 。
另一个值得注意的链接将是在维基百科的build筑模式的文章。
我偶尔看到没有C的MVC,视图监听模型数据的变化,并相应地改变渲染,以及模型中的方法绑定到视图的事件处理程序。
对于需要与数据紧密结合的项目(比如有可视化组件与模型的模型或属性直接相关的项目)时,这可能是相当有用的,因为它删除了“中间人”。
不过,我认为很多人会认为,这仍然是MVC,只是一个混合版本,视图和模型之间build立的绑定是控制器逻辑。
那么有Model-View-Presenter,但是我认为你会发现MVC最常见的“替代”实际上是缺乏适当的分离。 作为一个极端的例子,考虑传统的ASP页面,HTML,VBScript和SQL是在同一个文件中并排存在的。 (这不是ASP的狂欢 – 你会发现在其他语言的很多这样的例子。)
虽然上面的答案是非常正确的,但是我认为更重要的是要注意,“devise模式”这个词在所有创build软件的人中是完全不知道的。 他们刚刚开始编写代码。
挑战并不在于select最佳的devise方法,而是让别人相信devise具有价值。
那么现在已经很老了。 我想再提一点(为了获得更多的知识信息) PresenterFirst patrern
这里有更多相同的信息:
http://en.wikipedia.org/wiki/Presenter_First
http://www.atomicobject.com/pages/Presenter+First
HTH
表示 – 抽象 – 控制(PAC)模式家族,其中接口/交互由代理层次处理。
维基百科的文章不是很好的http://en.m.wikipedia.org/wiki/Presentation-abstraction-control
在Lift web框架中,我们使用View First方法。 基本上一个视图是由一个或多个片段组成(有点类似于控制器),片段可以嵌套。 这对于HTML和Scala内置的XML处理function非常有效。
您可以使用当前的ASP.NET框架来自定义MVC,并保留回发模型。
http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx
观察者模式呢? 如果我没有弄错的话,MVC是在Smalltalk中引入的,之后出现了一些发布/订阅模式。
观察者模式(发布/订阅模式的一个子集)是一种软件devise模式,其中一个被称为主体的对象维护一个名为观察者的依赖项列表,并自动通知它们任何状态的变化,通常通过调用一个的方法。 主要用于实现分布式事件处理系统。
例如:只有当有数据要保存时,才能在编辑器中启用保存button。 观察者模式的另一个例子是MFC中的文档视图体系结构,其中视图在文档更改时被更新。