我刚刚开始阅读“应用UML和模式(第2版)”一书。 GRASP模式之一是信息专家,与Modell形式MVC相当吗?
他们是否有相同的职责(存储和检索信息)?
答案 0 :(得分:4)
来自MVC的GRASP和Modell的信息专家是否相同?
是和否。
他们是否有相同的责任(存储和检索 信息)?
没有。信息专家的资格不仅限于存储和检索信息。更常见的是持久层,我们称之为“纯粹制造”。
GRASP模式(我更喜欢它们作为原则)用于确定哪个责任属于哪个类,或者此责任是否需要新类。它有助于我们将设计保持在类级别。另一方面,MVC是关于整个系统的设计 - 你如何划分它。 MVC的3个部分中的每一部分通常包含多个类。
首先确定架构模式和/或设计模式。然后,我们将GRASP原则应用于系统必须履行的每项职责。
假设我们有一个应用程序,但客户希望它有不同的风格或UI。数据和业务逻辑是相同的。所以MVC是一个很好的候选者,可以将模型分开并为所有客户重用它。
现在在我们的模型中,我们有一个Customer类。该系统的一个职责是向客户发送电子邮件。 Customer
类存储有关客户的信息,因此它是信息专家。我们在Customer
课程中存储电子邮件地址,并添加方法getEmailAddress()
。如果我们将“发送电子邮件”的责任添加到Customer
课程,则会违反“高凝聚力”。因此,我们可以应用“纯制作”并添加一个新类EmailSender
,其中包含电子邮件地址,主题和电子邮件正文。这个例子可能听起来很傻,但这是我能想到的最好的。
(在MVC架构中,模型具有控制器和视图所需的所有数据。我猜,OP从这个角度认为模型是信息专家。)