有哪些适用于Web框架的良好设计模式?

4
除了MVC,Rails引起的狂潮外,有哪些设计模式对Web框架是有用的?并不是说这是件坏事,但它现在几乎已经成为Web框架中普遍存在的东西。
理想情况下,该模式应使以下操作更加容易:
- 关注点分离 - 代码的模块化/可重用性 - 单元测试
有哪些模式符合要求?是否有遵循此模式的框架示例?
6个回答

4

MVC并不是Rails引发的狂热。它起源于Smalltalk。您还可以在早于Rails的GoF书中查看其历史。

除了GoF书之外,我不知道其他模式,但我认为分层(例如,单独的Web、服务和持久化层)和分解的一般思想仍然适用。


我知道MVC模式早于Rails出现;但直到Rails出现后,它才在Web框架中变得普遍。 - Confluence
1
不是真的。在Struts 1中确实存在。 - duffymo
JSF是Struts的组件版本。Seam是Hibernate和Struts的组合。Spring是Model-2 MVC的扩展,改进了Struts的不足之处。它们都源自Craig Walls的原始想法,并且比Rails早得多。 - duffymo

3

Lift web框架采用其创建者所称的“View First”方法。

与MVC不同的是,控制首先由视图处理,而不是由控制器处理。视图可以调用多个“片段”中的逻辑(最接近控制器的类比)。

我认为这是RESTful设计的一种倒置,其中URL映射到资源,并且视图是显示这些资源的一种方式。在View First中,URL映射到视图,可以提取和显示任意集合的资源。

这背后的原因是,网站或应用程序上的页面通常需要显示比请求的资源更多的内容:它可能有一个最近博客评论列表,一个“喊话盒子”等等。其他框架通过具有辅助机制来处理此内容并处理输入(例如Django的模板包含标签和中间件),并将控制器*留给页面正在显示的主要资源。

(*在像这样的讨论中涉及Django很棘手,因为本质上它是MVC,尽管出于微妙的原因,其创建者使用Model-View-Template术语。在这里,我将称Django的视图为控制器。)


1

你看过MVP了吗?

这是一个广为人知的MVC的替代品,并且已经在很多“著名”的模式书中有所涉及。

你可以在这里读到Martin Fowler将MVP实际上分成了两个模式。

这里有一个用于PHP的MVP框架

这里是.NET的一个框架

值得注意的是,负责MVC的.NET团队也受到了Django的影响,而不仅仅是Rails。


1

0

观察者模式

工厂模式


0

虽然MVVM(或DM-V-VM)已经被提到过了,但在MSDN网络上有一系列关于它的好文章(尽管主要涉及WPF)。如果你正在寻找另一个DM-V-VM示例,我恰好写了一个PHP框架,大部分遵循这种模式。

此外,我认为在Web应用程序开发中,MVC有很多不同的解释。例如,只需比较Apache StrutsCakePHP背后的(关于MVC的)思想即可。我没有使用RoR,但我会进一步了解MVC(再次强调,在Web应用程序开发中)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接