此文参考了,建议读者阅读原文。
面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳出相关的类;然后定义各个类之间的关联关系,并给这些类分配相应的职责,同时定义这些类之间的协作方式。将相应的职责分配给具体的类是OO过程中非常重要的一步。GRASP设计模式是职责分配过程中的一套非常重要的设计模式。它给出了在给类分配职责的过程中,设计者们所需要遵从的一些原则或者指导性的建议
GRASP不是平时说的GoF(Gang of Four)的23种设计模式。GRASP设计模式描述的是在OO设计中为互相协作的类分配职责的原则或者建议,而GoF的设计模式则是在更高的层次上描述一个OO系统或者其局部系统的行为以及结构上的抽象。GRASP与GoF最大的区别是它描述的是互相协作的多个类间职责分配的原则或者建议。
GRASP设计模式的全称是General Responsibility Assignment Software Patterns,即通用职责分配软件模式。它定义了9个基本的OO设计原则或基本的设计构件。这9个设计模式分别是:
- 创建者(Creator)
- 信息专家(Information Expert)
- 低耦合(Low Coupling)
- 控制器(Controller)
- 高内聚(High Cohesion)
- 多态性(Polymorphism)
- 纯虚构(Pure Fabrication)
- 间接性(Indirection)
- 防止变异(Protected Variations)
GRASP是对象职责分配的基本原则,其核心思想是职责分配(Responsibility Assignment),用职责设计对象(Designing Objects with Responsibilities)
Reference:
- https://blog.csdn.net/langjian2012/article/details/42716649
- https://blog.csdn.net/lhypang2006/article/details/1655389