【问题标题】:How to learn MVC -- *not* in a web setting [closed]如何在网络环境中学习 MVC——*不是* [关闭]
【发布时间】:2010-10-27 03:53:12
【问题描述】:

我希望学习 MVC 范式并将其应用到 GUI 开发中(至少一开始是在 C#.NET 中,但我想我也想在其他地方应用它)。到目前为止,我所看到的几乎所有教程都假设如果您正在考虑 MVC,那么您必须进行 Web 开发,并且他们仅从 Web 上下文中检查 MVC。我不关心网络开发。

有人在非网络环境中使用 MVC 吗?它似乎是 GUI 开发的理想选择——将表示与底层数据模型分开。但我只是在学习,所以我不知道。任何指向教程或参考作品的指针将不胜感激,谢谢。

【问题讨论】:

标签: c# .net model-view-controller user-interface


【解决方案1】:

查看《Head First Design Patterns》一书。它是实现设计模式的极好指南,并且还有一个可靠的 MVC 示例。

【讨论】:

    【解决方案2】:

    大多数 GUI 都以某种形式使用 MVC。

    MVC 并没有什么神奇之处,事实上,它只是一种让你的模型与其他一切分开的方式。视图和控件几乎总是配对的,因为视图的实现细节决定了控制器的构建方式。

    此外,每个实施 MVC 的人似乎对什么属于哪里都有稍微不同的想法。东西在视图和控制器之间来回切换非常容易——而且许多视图实际上是由整个微型 MVC 架构组成的!

    我并不是要你忽略 MVC 或任何东西,它是一套非常好的指导方针,我只是告诉你不要强调提出一套每个人都遵循的完全定义 MVC 的规则因为你可能找不到。每个人都会稍微弯曲它以适应他们架构的其余部分。

    【讨论】:

      【解决方案3】:

      Java 中的 Swing 使用 MVC。可能值得一试?

      【讨论】:

        【解决方案4】:

        我没有任何要分享的链接,但我最近一直在尝试这个。我所做的是创建一个控制器和一个控制器接口。控制器接口实际上实现了几个其他接口,以将所有独特的功能清楚地分开。

        用户界面(窗口和窗体)仅通过其界面就有一个控制器句柄。当窗口上发生事件时,窗口类将直接通过控制器将这些路由到等效调用。

        控制器知道模型。就我而言,我有一个 Oracle 数据库和一个 SDE 数据库。这些被包装在类中,因此我可以控制自己的实现和接口。控制器将向数据库(存在于数据模型命名空间中)发出请求并处理数据以满足视图的请求。

        实现起来非常容易,并且使开发变得非常清晰、干净和简洁。

        【讨论】:

          【解决方案5】:

          如果我的声誉足够高,我会评论 Rick 发布的内容。但由于它不是我自己的帖子:

          我也喜欢 Head First 设计模式书,但我认为它对于您感兴趣的特定主题来说有点过于宽泛。

          如果您想了解专业人士如何使用 C#.NET WinForms 实现 MVC,我强烈建议您查看 CAB(复合 UI 应用程序块)。

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

          http://www.microsoft.com/downloads/details.aspx?FamilyId=7B9BA1A7-DD6D-4144-8AC6-DF88223AEE19&displaylang=en

          【讨论】:

            【解决方案6】:

            MVC 模式也可以应用于 windows 窗体。查看 MVC#。 http://www.MVCSharp.org/Using_Winforms_views_engine/Default.aspx

            【讨论】:

              【解决方案7】:

              这个pygame tutorial 使用 MVC。拼凑一个小游戏可能是一种有趣的方式来掌握设计模式。

              【讨论】:

                【解决方案8】:

                Objective C 和 Cocoa 中的 Mac 编程通常是 MVC 模型。

                它不是 C#/.NET,但如果您想花时间阅读它,您可能会得到一些想法。

                【讨论】:

                  【解决方案9】:

                  我相信您将 MVC 和 MVP 模式与 Microsoft 的复合应用程序块和智能客户端软件工厂一起使用。这是文档的链接: link text

                  【讨论】:

                    【解决方案10】:

                    MVC 最初被定义为 GUI 应用程序的模块化 OOP 风格。只是后来这个名字被一种完全不同的 web 应用程序的分层样式借用了。如果你不关注“web MVC”,你会发现很多“GUI MVC”示例和参考。

                    【讨论】:

                    • 这不能回答问题。
                    • @Eva:但它纠正了一个误解:Eric 的情况似乎是“这个 web 概念听起来很整洁,我想知道它是否适合 GUI 开发”,而实际上它 已经适应网络的 GUI 概念(我认为不太好)
                    • 作为评论比作为答案更有意义。
                    猜你喜欢
                    • 1970-01-01
                    • 2017-02-28
                    • 2012-01-31
                    • 1970-01-01
                    • 2020-08-11
                    • 2018-12-02
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-10-21
                    相关资源
                    最近更新 更多