同时通过大学和以下的SO发展下去,我已经听说了很多有关模型 - 视图 - 控制器的架构设计模式。甚至在我知道它是什么之前,我无意中使用了MVC模式,并且仍然在我的日常工作中使用它。从我所看到的,这可能是今天使用的最流行的模式。但是,我没有听说过很多,但是可以使用替代模式来代替MVC。那里有什么选择,并且你会决定通过MVC使用它们的原因是什么?我也有兴趣了解他们典型的系统类型。最后,使用它们的优点和缺点是什么?模型 - 视图 - 控制器有什么替代方案?
回答
- 被动视图 - http://martinfowler.com/eaaDev/PassiveScreen.html
- 监督控制器 - http://martinfowler.com/eaaDev/SupervisingPresenter.html
- 模型 - 视图 - 演示 - http://martinfowler.com/eaaDev/ModelViewPresenter.html
我个人最喜欢的是被动视图。比其他人更容易测试,包括MVC。
我偶尔看到没有C的MVC,其中视图监听模型数据的变化并相应地改变渲染,以及模型中的方法绑定到视图的事件处理程序。
对于需要视图与数据紧密结合的项目(例如何时存在与模型或模型的属性直接相关的可视化组件),这可能相当有用,因为它会删除“中间人“。
我想很多人会认为,虽然,这仍然是MVC,只是一个杂交的版本,并且该视图和模型之间建立的绑定是控制器逻辑。
嗯,有模型 - 视图 - 演示,但我认为你会发现,最常见的“另类”到MVC是真正缺乏适当的分离。作为一个极端的例子,考虑传统的ASP页面,HTML,VBScript和SQL可以在同一个文件中并排找到。 (这不是ASP的庆典 - 你会发现很多这样的例子在其他语言。)
虽然上面的答案是十分正确的,我认为这是更重要的是要注意的是,单词“设计模式”是完全所有创建软件的人中有90%未知。他们刚开始编写代码。
的挑战不是选择最好的设计方法,它令人信服的其他人设计的具有价值。
可以与目前的ASP.NET框架滚你自己的MVC,仍然保持回发模型。
http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx
的表示 - 抽象控制(PAC)家族的图案,其中,接口/交互由代理层次处理。
维基百科的文章是不是很大 http://en.m.wikipedia.org/wiki/Presentation-abstraction-control
在Lift Web框架,我们使用一个View First方法。基本上,视图由一个或多个片段组成(与控制器有点类似),片段可以嵌套。这对于HTML和Scala内置的XML处理功能非常有效。
其他一些架构模式,包括MVC。
分层系统
TCP/IP
面向对象的组织
模型 - 视图 - 控制器,表示 - 抽象 - 控制,模型视图演示者和模型视图ViewModel。
示例将是ASP.NET的MVC,Ruby on Rails以及其他一些示例。
基于事件,隐式调用
浏览器环境(DOM)
管道和滤波器架构
UNIX管道
库
表依循Garlan由肖&软件体系结构的驱动口译
您也可以找到this paper一个不错的读取。
另一个值得注意的链接是关于架构模式的文章Wikipedia。
现在它已经很老了。我想提一个多(在更多的知识信息的利息)为PresenterFirst patrern
这里是在同一个信息:
http://en.wikipedia.org/wiki/Presenter_First
http://www.atomicobject.com/pages/Presenter+First
HTH
Observer模式呢。如果我没有弄错,MVC是在Smalltalk中引入的,然后出现了一些发布/订阅模式。
观察者模式(发布/订阅模式的子集)是一种软件设计模式,其中称为主题的对象维护其依赖项列表(称为观察者),并自动通知它们任何状态更改,通常通过调用他们的一种方法。它主要用于实现分布式事件处理系统。例如:
例如:只有当有数据要保存时,保存按钮才能在编辑器中启用。观察者模式的另一个示例是MFC中的Document View体系结构,其中在文档更改时视图会更新。
- 1. 控制器方法的替代方案
- 2. 模型视图控制器
- 3. 模型 - 视图 - 控制器(MVC)优于模型 - 视图的优点是什么?
- 4. 什么是MVC的替代方案?
- 5. CSharpOptParse还有什么替代方案?
- 6. SWT TabFolder有什么替代方案?
- 7. InstallShield有什么好的替代方案?
- 8. 论坛有什么替代方案?
- 9. pinax有什么替代方案?
- 10. IRB有什么替代方案?
- 11. 什么是流量控制例外的替代方案?
- 12. ASP.NET视图模型替代
- 13. Yii什么是“控制器视图”?
- 14. 模型与视图控制器进行通信的建议方式是什么?
- 15. 什么是一些pagerank替代方案?
- 16. TTWebController的问题... UIWebView的替代视图控制器模板?
- 17. MATLAB编辑器有什么替代方案?
- 18. JavaScript中的模型 - 视图 - 控制器
- 19. MVCS - 模型 - 视图 - 控制器服务
- 20. 视图模型属性在控制器
- 21. 模型,视图,控制器混乱
- 22. GWT模型视图控制器
- 23. PHP视图 - 控制器类模型
- 24. 了解模型 - 视图 - 控制器
- 25. (模型/视图/控制器)MVC
- 26. 如何使用模型/视图/控制器方法制作GUI?
- 27. 什么是Struts 1.3的替代方案
- 28. Vb.net模型视图控制
- 29. Flash视频替代方案
- 30. iOS - 表视图和表视图控制器有什么区别
还有Model-View-ViewModel(-Controller),它在.NET空间中越来越受欢迎。您可以创建一个ViewModel(通常在Controller中)传递给View以减少View对Model的实现细节的依赖。这是我目前最喜欢的。 – 2009-09-11 08:01:17
是不是被动查看(几乎)所有Web框架实现?我无法想象任何构建在模型的AJAX轮询中的“我的头顶”的框架“通知”视图。被动视图和三层之间有什么区别? – 2010-05-28 17:11:04