MVC、MVP 和 MVVM 设计模式在编码 C# 方面有什么区别

2023-12-08

如果我们使用短语“MVC、MVP 和 MVVM 设计模式之间的差异”搜索 Google,那么我们可能会得到一些讨论的 URLMVC MVP 和 MVVM 设计模式的区别理论上就像:

MVP

在无法通过“dataContext”进行绑定的情况下使用。 Windows 窗体就是一个完美的例子。为了将视图与模型分离,需要一个演示器。由于视图无法直接绑定到呈现器,因此必须通过接口(IView)将信息传递给视图。

MVVM

在可以通过“dataContext”进行绑定的情况下使用。为什么?每个视图的各种 IView 接口都被删除,这意味着需要维护的代码更少。 MVVM 可以使用 Knockout 包含 WPF 和 javascript 项目的一些示例。

MVC

在视图和程序其余部分之间的连接并不总是可用的情况下使用(并且您无法有效地使用 MVVM 或 MVP)。 这清楚地描述了 Web API 与发送到客户端浏览器的数据分离的情况。 Microsoft 的 ASP.NET MVC 是管理此类情况的绝佳工具,并提供了非常清晰的 MVC 框架


但我还没有找到一篇文章从理论上讨论了这种差异以及示例代码。

如果我能找到一篇讨论这 3 种设计模式(MVC、MVP 和 MVVM)之间差异以及代码的文章,那就太好了。

我想获得 3 个类似的源代码CRUD通过这三种设计模式(MVC、MVP 和 MVVM)实现的应用程序。这样我就可以浏览代码并了解如何为这三种设计模式(MVC、MVP 和 MVVM)编写代码。

因此,如果存在任何此类文章讨论这 3 种设计模式(MVC、MVP 和 MVVM)的代码看起来有何不同,那么请将我重定向到该文章。


一些基本的区别可以简写为:

MVC:

传统的MVC是有一个

  1. 模型:充当数据的模型
  2. View :处理用户的视图,可以是 UI
  3. Controller:控制Model和View之间的交互,其中View调用Controller来更新Model。如果需要,视图可以调用多个控制器。

MVP:

与传统的MVC类似,但Controller被Presenter取代。但与 Controller 不同,Presenter 也负责更改视图。视图通常不会调用演示者。

MVVM

这里的区别是视图模型的存在。它是观察者设计模式的一种实现,其中模型中的更改也由虚拟机在视图中表示。 例如:如果更改滑块,不仅模型会更新,而且视图中显示的可能是文本的数据也会更新。这样就有了双向数据绑定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC、MVP 和 MVVM 设计模式在编码 C# 方面有什么区别 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 如何使用 Jackson 删除 Java 中的空 json 节点?

    我是一名初级 Java 程序员 所以如果我的问题有点愚蠢 我很抱歉 我有一个 JSON 对象 如下所示 element1 generated name 1 a isReady false generated name 2 generated
  • 从一个文件读取行并写入另一个文件,但删除包含特定字符串的行

    我正在尝试从文本文件中读取文本 读取行 删除包含特定字符串的行 在本例中为 坏 和 顽皮 我写的代码是这样的 infile file oldfile txt newopen open newfile txt w for line in in
  • 在 OpenCV 中使颜色完全透明

    我有一个基本的 png 文件 其中有两种颜色 绿色和洋红色 我想要做的是获取所有洋红色像素并使它们透明 以便我可以将图像合并到另一个图像中 一个例子是 如果我有一个洋红色背景上的 2D 角色的图像文件 我会删除背景中的所有洋红色 使其透明
  • 如何将可观察到的 Firebase 列表中的数据存储到数组中?

    我正在尝试使用 Angular 2 将数据从 Firebase 复制到数组 但我无法将数据推送到数组中 这是代码 变量 uid string agencyItems FirebaseListObservable
  • echo 语句中的逗号代表什么意思?

    我试图从递归函数中回显字符串 echo li node recurse arr li and echo li node recurse arr li function writeList tree if tree null return e
  • 如何转换特定时区的日期时间?

    我发现很难理解 UTC 的工作原理 我必须执行以下操作 但我仍然很困惑是否能得到正确的结果 目标 确保数据库中所有保存的日期均为 UTC 格式 更新默认时区为马尼拉时间 确保所有返回日期均为马尼拉时间 所以代码是 public Conver
  • SSIS中的数据转换

    我昨天发布了一个与数据转换相关的问题 现在我将问题重新表述如下 我有一个文本文件 其中有日期和时间作为字符串 所以我需要读取该字符串 日期 时间 并将其转换为双精度 我们可以在下面的例子中看到 Date Time Converted Dou
  • jQuery ajax 响应文本“未定义”

    我有一些 jQuery 它将两个变量发送到 php 脚本 PHP 非常简单 只是根据给定的内容返回一个字符串 即 更新成功 我想在页面上以某种方式使用它 第一次单击时 我收到一条警告 提示 未定义 任何进一步的单击都会正常工作 很确定我离得
  • 输入州和国家/地区时获取时区(在 ics 文件中使用的时区)

    在文本框中给出州和国家 地区时获取时区 有没有办法用这两个值获取那个地方的时区 输入会像 var state New York var country United States 结果应该是 美洲 纽约 OR 获取当前浏览器的本地时区 我需
  • 如何在 Swift 中创建指向自身的静态指针变量?

    在 Objective C 中 我经常使用这样的模式 static void 作为识别标签 有时这些标签仅在该函数 方法中使用 因此将变量放置在函数中很方便 例如 MyObscureObject GetSomeObscureProperty
  • 又名,在转换之前验证日期。 ISDATE() 等效项

    DB2版本是9 7 0 7 我有一个平面文件 需要在插入生产表之前进行充分验证 为了进行分析 我将其解析为一个表 其中所有列都是VARCHAR 任务之一是验证日期 我需要能够找到具体的无效日期 报告范围 频率 和解决方案 原因 I use
  • 获取目录下所有文件的绝对路径

    在Python中 如何获取可能有许多子文件夹的目录中所有文件的绝对路径 I know os walk 递归地给我一个目录和文件的列表 但这似乎并没有得到我想要的 os path abspath确保路径是绝对的 使用以下辅助函数 import
  • Django 模板创建中的脚本错误

    我正在开发一个在模板中执行多个功能的代码 并且我使用脚本来使用 if else 和 for 循环检查功能 但是我收到了此类错误 请帮助我了解原因 提前谢谢 如果您在 script 标记内的代码末尾看到 if else 标记的声明必须类似于下
  • NSmanagedObject copyWithZone 问题

    我有一个自定义类 Thing NSManagedObject 其属性为 adminName 我试图在这个 Thing 类中创建一个 copyWithZone 函数 但是当我运行该应用程序时 它说 setAdminName 不存在 在我的实现
  • TCP 分片

    我知道 TCP 提供类似流的数据传输 但主要问题是 通过 TCP 发送数据时会发生什么情况 1 消息可以被分割成 N 个块以适合 MTU 大小 2 1次recv调用可以读取两条消息 还会有下一种情况吗 MTU 例如 1500 字节 客户端调
  • 如何防止'postcss-preset-env'删除CSS逻辑属性?

    在我的 Webpack 配置中使用以下内容时 test scss i use style loader loader css loader options importLoaders 1 loader postcss loader opti
  • 通过 gwt 中的 id 获取小部件

    我有一堆动态生成的 TextBox es 在创建步骤中 我为它们分配 ID 属性 例如 id Button b new Button b setText add textbox b addClickHandler new Clickhand
  • 使用 Javascript/jQuery 从 HTML 元素获取所有属性

    我想将 Html 元素中的所有属性放入一个数组中 就像我有一个 jQuery 对象 它的 html 看起来像这样 span span 现在一种方法是使用描述的 xml 解析器here 但是我需要知道如何获取我的对象的 html 代码 另一种
  • 带有 app:showAsAction 的项目未显示

    我不明白为什么错误和不兼容 AndroidStudio 告诉我 应该将 app showAsAction 与 appcompat 库一起使用 代码 menu menu
  • MVC、MVP 和 MVVM 设计模式在编码 C# 方面有什么区别

    如果我们使用短语 MVC MVP 和 MVVM 设计模式之间的差异 搜索 Google 那么我们可能会得到一些讨论的 URLMVC MVP 和 MVVM 设计模式的区别理论上就像 MVP 在无法通过 dataContext 进行绑定的情况下