首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >四人组设计模式如何适应MVC范式?

四人组设计模式如何适应MVC范式?
EN

Stack Overflow用户
提问于 2012-02-03 04:39:42
回答 3查看 12.4K关注 0票数 20

我已经仔细考虑了一段时间的设计模式,我刚刚开始了解如何在我的开发工作中更有意识地将其中的一些模式结合起来。然而,我仍然对他们在本书开头对MVC的处理以及它与本书其余部分的关系感到困惑。

我使用过的大多数框架-- Spring、Yii、ASP.NET,甚至Objective-C Cocoa (UIKit) --都迎合了MVC范式。我之所以选择MVC,是因为对我来说,MVC是一种对对象进行分类以及它们应该如何相互传递消息或交互的有用方法。另外,即使你没有开始以MVC的方式思考,这些框架也会强迫你去做。

我也觉得我理解了设计模式的前提:他们真的不喜欢子类化,他们喜欢抽象接口,他们努力实现松散耦合。我不能说我完全理解了所有的模式,也不能说它们是如何有用的,但我对它有了一点感觉。

我的问题是: MVC和设计模式之间的相互作用是什么?在本书的第一章中,他们用MVC应用程序示例说明了什么?是否某些设计模式与MVC范例无关?例如,我想知道Command模式应该如何适应MVC。它似乎非常有用,但是我们是否要创建一个CommandModelCommandController来发送给其他控制器呢?我们只是按照书中的规定创建一个Command对象吗?基本上,我想知道MVC和设计模式的想法是否完全脱节,我就是不明白,或者是否有一些模式不适合这个模型。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-14 18:51:15

我个人的观点是,MVC是观察者模式的简化版本,观察者模式是中介模式的简化版本。

MVC:一个模型,一个视图,控件管理它们之间的通信。

观察者模式:一个模型,多个视图(观察者/订阅者),发布者管理通信

中介器模式:几个不同的模型、几个视图,中介器管理它们之间的通信。

票数 15
EN

Stack Overflow用户

发布于 2012-02-03 05:23:39

MVC是一种模式。但它只涵盖了web应用程序的一个小方面。与MVC一起使用的另一个常见模式是Repository。这些是更多的架构模式...他们的范围对整个项目有更大的影响。

GOF模式将以一种小的方式在各地介绍它们自己。根据设计选择,它们可以帮助构建MVC基础设施。例如,Strategy经常被使用,所以你可以插入不同的方式来做类似“身份验证”之类的事情。

您不必按原样使用这些模式,它们甚至不必是完全相同的代码结构。它更多的是你在设计中采用的模式的设计原则/目标。

票数 4
EN

Stack Overflow用户

发布于 2012-02-04 08:53:15

MVC是一种architectural pattern。它与命令模式等其他设计模式非常契合。但是您不能仅仅因为它们存在并且它们被写在一本权威的书中就应用它们。当您遇到编程/设计问题时,您可以应用模式,并且有一种方法可以解决其他人发现并记录下来的问题。解决问题的方法是模式。例如,您有一个将数据保存到数据库的应用程序。要保存的数据相当复杂:有些记录必须插入,有些记录必须更新,有些记录必须删除。步骤的顺序很重要,因为要插入到一个表中的记录取决于要插入到另一个表中的记录。因此,必须使用database transaction。实现事务的一种可能方法是使用命令模式。在Larman的"Applying UML and Patterns“一书(”使用模式设计持久性框架“一章,”使用命令模式设计事务“一节--向下滚动到第556页)中对此进行了很好的解释。PersistentObject是一个抽象的模型类。所有其他模型类都扩展了它。在该示例中,MVC在UI、应用程序和域层中实现,而Command在持久层中实现。这些模式有助于解决不同的问题,并且在该示例中它们是相互支持的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9119657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档