文档章节

GRASP设计模式

克虏伯
 克虏伯
发布于 10/21 23:43
字数 568
阅读 5
收藏 0

    此文参考了这篇博客,建议读者阅读原文。

    面向对象(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:

  1. https://blog.csdn.net/langjian2012/article/details/42716649
  2. https://blog.csdn.net/lhypang2006/article/details/1655389

© 著作权归作者所有

共有 人打赏支持
克虏伯

克虏伯

粉丝 15
博文 318
码字总数 106998
作品 0
渝北
程序员
私信 提问
GRASP通用职责分配软件模式

GRASP是General Responsibility Assignment Software Patterns(通用职责分配软件模式) GRASP提出了几个基本原则,用来解决面向对象设计的一些问题。与GoF设计模式不同的地方在于,GoF等设计...

chunquedong
2014/11/11
0
0
《PHP设计模式大全》系列分享专栏

《PHP设计模式大全》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201739.html 文章 php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页...

kaixin_code
11/06
0
0
编程中的那些套路——关于策略模式

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 今天讲讲策略模式,策略模式 和工厂模式十分相像(或者说在代码逻辑层面,他们是一样的)。 但策略模式与...

gzchen
08/27
0
0
【设计模式系列】浅析观察者模式

观察者<Observer>模式(有时又被称为发布-订阅<Publish/Subscribe>模式、模型-视图<Model/View>模式、源-收听者<Source/Listener>模式或从属者<Dependents>模式)是软件设计模式的一种。在此......

磊神Ray
2011/10/18
0
0
javascript 设计模式之工厂(Factory)模式

工厂模式介绍 工厂模式是一个创建型的模式,主要就是创建对象。其中工厂模式又分为简单工厂模式和抽象工厂模式。简单工厂模式是通过工厂方法确定创建 对应类型的对象。抽象工厂模式是通过子类...

hlxiong
2014/04/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Hive的三种Join方式

Hive中就是把Map,Reduce的Join拿过来,通过SQL来表示。 参考链接:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins Common/Shuffle/Reduce Join Reduce Join在Hiv......

GordonNemo
4分钟前
0
0
Spark学习记录(三)核心API模块介绍

spark ------------- 基于hadoop的mr,扩展MR模型高效使用MR模型,内存型集群计算,提高app处理速度。 spark特点 ------------- 速度:在内存中存储中间结果。 支持多种语言。Scala、Java、P...

我爱春天的毛毛雨
9分钟前
0
0
PHP5、PHP7安装

11月13日任务 11.10/11.11/11.12 安装PHP5 11.13 安装PHP7 PHP官网www.php.net 当前主流版本为5.6/7.1 cd /usr/local/src/ wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2 tar z......

zgxlinux
10分钟前
0
0
React 项目结构和组件命名之道

摘要: > * 原文地址:[structuring projects and naming components in react](https://hackernoon.com/structuring-projects-and-naming-components-in-react-1261b6e18d76) > * 原文作者:......

阿里云官方博客
10分钟前
1
0
无维护地稳定运行了8 年的 Hyperic HQ

最近在诊断一个系统意外停机时, 发现一个8年前部署部署的Hypeirc HQ 4.2,已经免维护,稳定运行了8年多。提供了及时的诊断信息。

MartinKing
25分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部