15

我真的对 GOF 和 GRASP 模式之间的区别感到困惑吗?甚至两者都有助于改进面向对象的实践

4

2 回答 2

31

简短的回答
GoF在设计模式中被提及。GRASP设计原则。设计原则比设计模式更抽象。

长答案
软件工程的主要目的是开发合适的软件。SDLC在顶层展示了软件工程的步骤。 软件设计是 SLDC 步骤之一。面向对象的软件设计是一种流行的软件设计方法。

要执行面向对象的软件设计,有多种资源(在书籍、教程和论文中)具有不同的名称,例如:指南、原则、启发式、模式、样式等。

这些名称之间的区别在于它们的抽象。顶级是主要原则,其他级别是有助于达到这些主要原则的细节。

顶层

在顶层,教程介绍了主要原则。(基于面向对象的分析和应用程序设计,Grady Booch 等人,1991 年)
面向对象的主要原则

  • 抽象
  • 封装(信息隐藏)
  • 层次结构(继承、聚合)
  • 模块化(高内聚和松散耦合)

所有后续的原则和模式都与这个主要原则相关,并尝试支持和改进它们。

第二级

在第二级资源中有原则,并试图支持和改进面向对象的主要原则。

  1. 坚实的原则
  2. 掌握原则
  3. 得墨忒耳定律
  4. 等等(其他单一命名的原则,如 LoD)

三级

这一级别的资源称为设计模式Gof (Gang of Four) 有第一本关于设计模式的书。有 23 种设计模式来支持面向对象设计的主要原则和其他原则。

在 GoF 之后,许多关于在特定编程语言和特定框架中使用设计模式的书籍(例如 J2EE 设计模式、JQuery 设计模式等)

设计模式更详细,更接近于编程语言。但是,主要原则(顶层)和原则(第二层)是如此抽象。

第四级

在这个级别,资源称为:启发式

这个级别的资源比其他组更详细和非常具体。

最好的资源是面向对象的设计启发式(72 启发式),Arthur J. Riel 的书,1996

第五级

在最后一级,有Guideline

All Do It , Don't Do it , Avoid , ... 书中的指导方针可以收集在这个组中。

于 2017-12-30T19:58:06.730 回答
13

GOF 是模式,即针对反复出现的问题的经过验证的设计解决方案。GRASP 是原则,不依赖于任何特定的问题域,因此在任何情况下都是如此

于 2010-11-24T19:59:05.190 回答