【问题标题】:Dealing with models that require joins处理需要连接的模型
【发布时间】:2014-11-12 02:30:36
【问题描述】:

在 MVC、MVVM 或 MVP 中,我通常有一些模型,要么非常强调结合使用其他模型来获取所需的完整数据集,要么基本上需要连接到其他表(模型)。当我遇到这种情况时,我通常只是像往常一样扩展模型的功能,但会在我正在创建的新方法中加入到另一个表的连接。有时我很难决定我应该把这个功能/加入哪个模型,因为它使它依赖于不特定于该模型的东西。在使用利用数据模型的模式时,是否有更好的方法来处理关系?

这里有一些伪代码来帮助说明我在混入一些活动记录时的意思:

public static void getAll() {
    this.db("sometable").join("anothertable", "column", "=", "anothercolumn").select();
}

现在,如果模型适用于sometable,我将通过在上述方法中加入another table 来创建某种依赖关系。现在sometable 的模型也处理anothertable,它有自己的独立模型。

【问题讨论】:

  • 你有一点伪代码来说明这个问题吗?完全理解场景有点困难......
  • 当然,我刚刚添加了一些。
  • select 是多余的;仅当将连接类型映射到另一种类型时才需要。
  • 这是伪代码。它并不意味着工作,我是根据我过去使用的语言和框架的混合编写的。我不是问如何处理代码,而是更多关于如何处理一般情况。

标签: oop design-patterns model-view-controller mvvm mvp


【解决方案1】:

“模型”是一个抽象术语。它不需要是一个单一的模型。

我将 MVP 视为演示者、视图以及完成工作所需的任何其他东西。这可能是一个类、一个枚举或多个存储库。只要我保持对演示者的依赖性较低,我就很高兴。

您是否可以考虑让您的控制器或演示者依赖于“高于”您的模型的东西,以便在您需要它们时以及何时需要它们?

【讨论】:

  • 您关于使我的模型或演示者依赖于我的模型之上的某些东西的建议是一个很好的建议。我想我可以使用服务对象来为我的模型和所需的执行流程提供各种接口。
猜你喜欢
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
相关资源
最近更新 更多