用于MVC Web应用程序的常见设计模式

16

我正在指导一些人构建Web应用程序。 他们了解并使用MVC,但我对在构建Web应用程序时使用的其他常见模式感兴趣。

那么,在一个适当的MVC应用程序中,你发现哪些模式很好地适合?也许是用于异步进程、定期任务、处理电子邮件等方面的模式。你希望知道哪些模式需要寻找,或者需要避免使用呢?

虽然这个问题并不重要,但我们大多数应用程序都使用ASP.NET和Rails。

4个回答

24
一旦进入MVC,探索“四人帮”书籍以外的模式,进入Martin Fowler的“企业应用架构模式”可能会很有价值。 注册表模式可用于在整个对象层次结构中使知名对象可用。实质上是使用全局数据的替代品。
许多MVC框架也使用前端控制器两步视图模式。
在MVC中,模型最好设计为领域模型模式,尽管一些框架(由Rails引领)将模型ActiveRecord模式混淆。我经常建议Model和ActiveRecord之间的关系应该是HAS-A,而不是IS-A。

还可以在波特兰模式仓库维基上阅读有关ModelViewController的内容。其中有一些关于MVC、面向对象编程和其他与MVC相辅相成的模式的讨论,比如Observer


你有没有ASP.NET MVC中实现了Registry模式的示例? - J86
@Ciwan,抱歉,我从未接触过ASP.NET。你可以像我一样轻松地在谷歌上搜索示例。 - Bill Karwin

3
这个问题非常开放,很难给出正确的答案。我可以告诉你,在MVC中(以及Web应用程序中),Observer模式非常重要,这将是一个好答案。几乎所有存在的设计模式在大型Web应用程序中都很常见。您需要使用一些Factory来构建复杂对象,并访问某些部分需要一些Facade
如果您想要更多的“技巧”或最佳实践而不是设计模式,我建议您使用IoC和使用良好的Framework,而不是从头开始。我还可以建议您解释拥有良好的ORM引擎以更快地驱动您的持久层的好处(通常也可以来自框架)。

2
不要从开发方法中使用哪些模式的角度来看待它,而是更多地从如何在问题解决过程中应用模式的角度来看待它。项目所做的架构决策提供了与他人经验同样多的指示,告诉我们应该使用哪些模式。
话虽如此,我发现我喜欢 Provider 模型,因为它可以轻松地提供多种选择来完成单个任务,并增加部署的便利性。此外,工作单元模式非常适合设置事务边界。然而,总体上,架构和业务需求决定了针对任何给定代码更改或新开发采取的方法。
尽管我很喜欢模式,但我总是担心看到它们被过度使用。我个人见过有人只是为了使用它们而使用它们,这实际上使代码比应该更难维护并且更紧密耦合。此外,了解模式争论的双方都是有好处的。良好的模式知识应该结合反模式知识(通常被认为是一种模式)来全面掌握。

1
我最有可能推荐某种依赖注入(控制反转)方式。这是使用的单个最重要的补充“模式”。

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