【问题标题】:Is Information Expert from GRASP and Modell from MVC the same?GRASP 的 Information Expert 和 MVC 的 Modell 是一样的吗?
【发布时间】:2014-03-28 16:17:03
【问题描述】:

我刚开始阅读应用 UML 和模式(第 2 版)一书。 GRASP 模式之一是信息专家,相当于 Modell 形式的 MVC 吗?

他们是否有相同的职责(存储和检索信息)?

【问题讨论】:

    标签: oop design-patterns model-view-controller ooad grasp


    【解决方案1】:

    GRASP 的 Information Expert 和 MVC 的 Modell 是一样的吗?

    是和否。

    他们是否有相同的职责(存储和检索 信息)?

    没有。信息专家的资格不限于存储和检索信息。它更常见的是由我们称为“纯制造”的持久层来完成。

    GRASP 模式(我更喜欢它们作为原则)用于确定哪个职责属于哪个类,或者该职责是否需要一个新类。它有助于我们在类级别中保持设计的整洁。另一方面,MVC 是关于整个系统的设计——你如何划分它。 MVC 的 3 个部分中的每一个通常都包含多个类。

    首先确定架构模式和/或设计模式。然后,我们将 GRASP 原则应用于系统必须执行的每项职责。

    假设,我们有一个应用程序,但客户希望它具有不同的风格或 UI。数据和业务逻辑是一样的。因此,MVC 是保持模型分离并为所有客户端重用它的好选择。

    现在在我们的模型中,我们有一个 Customer 类。系统的一项职责是向客户发送电子邮件。 Customer 类存储有关客户的信息,因此它是信息专家。我们将电子邮件地址存储在Customer 类中,并添加一个方法getEmailAddress()。如果我们将“发送电子邮件”的职责添加到Customer 类中,则违反了“高内聚”。所以我们可以应用“纯虚构”并添加一个新类EmailSender,它需要一个电子邮件地址、主题和电子邮件正文。这个例子可能听起来很傻,但这是我能想到的最好的例子。

    (在 MVC 架构中,模型拥有控制器和视图所需的所有数据。我猜,从这个角度来看,OP 认为模型是信息专家。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 2017-04-26
      • 2010-11-15
      • 2021-07-15
      • 2019-06-02
      • 2016-03-06
      • 2014-10-23
      相关资源
      最近更新 更多