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

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

grasp设计模式应用场景_GRASP设计模式相关推荐

  1. grasp设计模式应用场景_grasp设计模式笔记回顾

    根据讲师所讲做了一下笔记以便自己能方便学习: ------------------------------------------grasp设计模式: grasp(general responsibi ...

  2. grasp设计模式应用场景_设计模式 GRASP GoF

    借用公开课 Justice 中的话,了解设计模式不一定能让我们解决软件设计与开发中的问题,但能让我们在遇到问题时,思考的方式不至鲁莽与茫然. 五大设计原则 面向对象软件设计具有五大基本原则(首字母缩写 ...

  3. javascript 保存原函数_前端工程师必须掌握的几个JavaScript设计模式及场景应用

    作者 | 考拉海购前端团队链接 | https://juejin.im/post/59df4f74f265da430f311909设计模式的定义:在面向对象软件设计过程中针对特定问题的简洁而优雅的解决 ...

  4. 23种设计模式应用场景

    23种设计模式应用场景 创建型模式 工厂方法模式: 原型模式:clone/fork子线程 建造者模式:框架组件实例化 抽象工厂模式:业务+反射 单例模式:只读单实例场景 结构型模式 装饰模式:换装软件 ...

  5. 精通python设计模式-浅谈Python设计模式 - 原型模式

    声明,本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在<精通Python设计模式>中把设计模式分为三种类型: 创建型模式 ...

  6. JavaScript设计模式之创建型设计模式

    此系列总结与<JavaScript设计模式>,总共分为创建型设计模式.结构型设计模式.行为型设计模式.技巧型设计模式和架构性设计模式五大类. github原文地址:YOU-SHOULD-K ...

  7. 设计模式(一)设计模式的分类与区别

    文章目录 一.设计模式的六大原则 1.1 开闭原则(总原则) 1.2 里氏替换原则 1.3 依赖倒置原则 1.4 单一职责原则 1.5 接口隔离原则 1.6 迪米特法则 1.7 合成复用原则 二.设计 ...

  8. java监听设计模式(java观察者设计模式)

    今天给大家分享一下观察者设计模式(监听设计模式),该模式在很多主流得框架.源码中使用率非常高.在分享之前先给大家讲一个我们使用手机的一个场景,我们都用过手机,当我们手机来电话的时候,会有各种复杂的操作 ...

  9. JAVA23种设计模式:单例设计模式【二】

    在有些系统中,为了节省内存资源,保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式 单例设计模式的定义与特点 定义: 指一个类只有一个实例 ,且该类能自行创建这个实列的一种模式. ...

最新文章

  1. 今年我读了四个开源项目的源码,来分享下心得
  2. Windows 的这款工具,有时让我觉得 Mac 不是很香
  3. 数据结构源码笔记(C语言):集合的位向量表示
  4. 一篇超级详细的jsp+servlet+jdbc+mysql检验登录操作(IntelliJ IDEA)
  5. 电脑故障检测软件_有什么软件可以检测出电脑配置是否达到游戏配置。
  6. nginx配置文件【转载】
  7. nodejs应用错误消息PayloadTooLarge的处理
  8. 关于 C++ 中输入输出的猜想
  9. php radius类,PHP Radius Search
  10. nodejs+socket.io即时聊天实例
  11. 相似度计算 java_Java基于余弦方法实现的计算相似度算法示例
  12. java大马后门_一款免杀php大马的解密与去后门
  13. java设置png dpi_设置PNG图片DPI 信息,保存为PDF(使用Magick),与OpenCV转换
  14. Dev c++中文乱码,codeblocks运行结果乱码解决办法
  15. 百度地图、高德地图、腾讯地图餐饮POI内容结构及获取接口
  16. F1 Delta Time 大奖赛每日挑战赛开启
  17. 【直觉建设】对卷积的理解
  18. PyFlink 教程:PyFlink DataStream API - state timer
  19. Android开发之获取网络类型(WIFI、2G、3G、4G)和运营商名称
  20. 三星android8 日期,三星披露升级Android 8.0时间 明年年初

热门文章

  1. 音遇怎么玩?音遇APP技术和玩法解析
  2. 华为三星争先押宝可折叠手机 究竟谁会成为最后的王牌?
  3. Tomcat环境变量配置win10
  4. 观后感笔记-20211121沈定刚教授在valse上的特邀报告
  5. 这所大学,发公告为博士招对象?
  6. Oracle服务器开放端口给外部访问(win10)
  7. 均值、方差、协方差、协方差矩阵
  8. canvas做太空人表盘
  9. java synthetic_java中什么是Synthetic,为什么我做实验无法得到和他相同的结果?
  10. flex布局中 text-overflow:ellipsis 失效