关于mvp:模型视图控制器有哪些替代方案?

关于mvp:模型视图控制器有哪些替代方案?

What Alternatives Are There to Model-View-Controller?

在大学学习和跟随SO的发展过程中,我听到了很多有关Model-View-Controller架构设计模式的信息。 我什至在不了解MVC模式之前就无意中使用了MVC模式,并且仍然在我的日常工作中使用它。 从我所看到的,它可能是当今使用的最受欢迎的模式。 不过,我还不太了解的是可以使用替代MVC的替代模式。 有哪些选项,您出于什么原因决定通过MVC使用它们? 我也想知道它们通常用于的系统类型。 最后,使用它们带来的利弊是什么?


  • 被动检视-http://martinfowler.com/eaaDev/PassiveScreen.html
  • 监督控制器-http://martinfowler.com/eaaDev/SupervisingPresenter.html
  • 模型查看呈现器-http://martinfowler.com/eaaDev/ModelViewPresenter.html
  • My personal favorite is the Passive View. More testable than others I've seen including MVC.


    其他一些架构模式包括MVC。

    分层系统

    TCP / IP

    面向对象的组织

    Model-View-Controller,Presentation-abstraction-Control,Model View Presenter和Model View ViewModel。

    例如ASP.NET的MVC,Ruby on Rails等。

    基于事件的隐式调用

    浏览器环境(DOM)

    管道和过滤器架构

    Unix管道

    储存库

    表驱动口译员


    您可能还会发现Garlan&Shaw撰写的有关Software Architecture的论文非常不错。

    另一个值得注意的链接是Wikipedia上有关建筑模式的文章。


    尽管以上答案是正确的,但我认为更重要的是要注意到90%的软件开发人员完全不知道"设计模式"一词。他们只是开始编写代码。

    挑战不是选择最佳设计方法,而是说服其他人设计具有价值。


    好吧,这里有Model-View-Presenter,但是我想您会发现MVC最常见的"替代"实际上是缺乏适当的分离。举一个极端的例子,考虑经典的ASP页面,其中在同一文件中并排找到HTML,VBScript和SQL。 (这不是ASP的重击-您会在其他语言中找到很多这样的示例。)


    我偶尔会看到没有C的MVC,其中的视图侦听模型数据的变化并相应地更改呈现,并且模型中的方法绑定到视图的事件处理程序。

    对于必须将视图与数据紧密结合的项目(例如,当存在与模型或模型属性直接相关的可视组件时),这很有用,因为它可以切掉"中间人"。

    但是,我认为许多人会争辩说,这仍然是MVC,只是一个混合版本,并且在视图和模型之间建立的绑定是控制器逻辑。


    好吧,现在已经很老了。我想再说一遍(为了获得更多信息的信息)是PresenterFirst patrern

    这是有关同一内容的更多信息:

    http://en.wikipedia.org/wiki/Presenter_First

    http://www.atomicobject.com/pages/Presenter+First

    高温超导


    在Lift Web框架中,我们使用"查看优先"方法。基本上,一个视图由一个或多个代码段(有点类似于控制器)组成,并且代码段可以嵌套。这与HTML和Scala的内置XML处理功能配合得很好。


    Presentation-Abstraction-Control(PAC)系列模式,其中接口/交互由代理层次结构处理。

    维基百科的文章不是很好
    http://en.m.wikipedia.org/wiki/Presentation-abstraction-control


    那观察者模式呢?如果我没记错的话,MVC是在Smalltalk中引入的,此后出现了几种发布/订阅模式。

    观察者模式(发布/订阅模式的子集)是一种软件设计模式,其中一个对象(称为主题)维护其依赖项的列表(称为观察者),并通常通过调用一个状态来自动通知状态更改他们的方法。它主要用于实现分布式事件处理系统。

    例如:仅当有要保存的数据时,"保存"按钮才会被启用。观察者模式的另一个示例是MFC中的"文档视图"体系结构,其中,当文档更改时,视图中的视图会更新。


    您可以使用当前的ASP.NET框架滚动自己的MVC,并且仍然保留回发模型。

    http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx


    推荐阅读