来自GRASP的信息专家和来自MVC的模型是一样的吗?



我刚刚开始阅读《应用UML和模式(第二版)》这本书。其中一个GRASP模式是信息专家,相当于模型形式MVC吗?

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

来自GRASP的信息专家和来自MVC的模型是一样的吗?

Yes and No.

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

。信息专家的资格不仅限于存储和检索信息。这通常是由一个持久层来完成的,我们可以称之为"纯制造"。

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

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

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

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

(在MVC架构中,模型包含了控制器和视图所需的所有数据。我想,OP已经从这个角度思考了作为信息专家的模型。

相关内容

  • 没有找到相关文章

最新更新