【问题标题】:C++ MVC Model - How should it be implemented?C++ MVC 模型 - 它应该如何实现?
【发布时间】:2009-07-30 14:15:20
【问题描述】:

对于模型应该如何在我的基本 C++ 实现中“工作”,或者更确切地说来自数据库后端的数据应该如何被封装/使用,我有点困惑。

我目前的想法是针对具有例如静态 findById() 方法的模型,该方法将返回同一模型的实例,然后表示单个“行”数据(允许操作等)可能是一个合适的方法。

就在数据库中创建一个新行而言,我想会创建一个模型的新实例,填充数据,并有效地调用一个 save() 方法?

希望我在正确的路线上,但对这里的实现/设计有点困惑。

【问题讨论】:

  • 你到底在说什么?
  • 恐怕现在还无法理解您的问题是什么。我猜你正在设计某种与 C++ 一起使用的 MVC 框架。但不是很清楚,你在做什么,为了什么目的,你在什么阶段,你目前的问题到底是什么。你能详细说明一下吗?
  • 嗯。我了解 MVC 的原理,以及模型应该实现什么 - 更多的是模型应该具有什么样的接口的问题。即是否应该通过静态方法查询数据,然后模型的实例代表单个“行”数据?希望这提供了一些澄清^^;...
  • 我认为可能让人们感到困惑的是,“MVC”是一个比数据库访问更广泛的术语。您可能应该详细说明具体您正在尝试使用 MVC 解决什么问题,并且您会得到更多相关的答案

标签: c++ model-view-controller


【解决方案1】:

所以,我想您是在问什么样的接口适合在关系数据库和面向对象的应用程序之间“转换”,尤其是在用 C++ 编写的 MVC 应用程序的上下文中。

一种常见的方法称为对象关系映射,或ORM。我只熟悉 Ruby on Rails 是如何实现 ORM 的,但是如果你把它带到 C++ 中,它看起来像这样:

  • 一个数据库表映射到一个类
  • 对表的操作(例如查询)映射到相应类的静态成员函数
  • 表中的行对应于相应类的实例
  • 表中的字段对应对应类的成员变量

可能有 C++ 库可以为您执行 ORM 映射。我自己都不熟悉,因为我从来没有在 C++ 中这样做过。

编辑:This 问题询问有关 C++ 的 ORM 库。

【讨论】:

    【解决方案2】:

    第一个建议:Gamma 等人的“四人帮”书 - 设计模式。它解释了 MVC 和其他必要的模式:观察者。

    维基百科也可能有帮助。

    基本上:模型代表数据,并且可以操纵它们。这是一堂课。模型必须不知道视图或控制器。它必须有可能在不知情的情况下通知其他人更改(例如观察者模式,qt 中的信号)。视图显示数据并对更改做出反应。它注册为模型的观察者,并且在大多数情况下都知道模型(不需要在那里解耦)。多个视图可能使用相同的模型。控制器也一样。在大多数现代 UI 中,视图和控制器是紧密耦合的,有时甚至是同一个对象(例如,滑块显示一个值,同时通过移动它来更改它)。

    由于历史原因:学习 Smalltalk(例如 Cincom Smalltalk)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多