GOF和GRASP设计模式之间的区别是什么?

Afn*_*hir 7 design-patterns grasp

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

Ara*_*ram 12

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


Gho*_*ani 9

简答题:
四人帮被提及到设计模式.和GRASP设计原则.设计原则比设计模式更抽象.

长答案:
软件工程的主要目的是开发一个合适的软件.SDLC介绍了顶级软件工程的步骤. 软件设计是SLDC步骤之一.而面向对象的软件设计是软件设计的流行做法.

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

这些名称之间的差异是它们的抽象.顶级是主要原则,其他级别是有助于实现这些主要原则的细节.

顶层

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

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

所有后续原则和模式都与这一主要原则相关,并试图支持和改进它们.

第二级

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

  1. SOLID原则
  2. GRASP原则
  3. Demeter法则 - LoD
  4. 等(其他单一命名的原则,如LoD)

第三级

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

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

设计模式更加详细,与编程语言非常接近.但是,主要原则(顶级)和原则(第二级)是如此抽象.

四级

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

这个级别的资源非常详细,而且非常具体.

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

第五级

在最后一级,有指南.

所有这样,不要这样做,避免,......书中的指导方针可以聚集在这一组中.