GRASP(通用职责分配软件模式)介绍及一些小经验

GRASP通用职责分配软件模式 1.  概述 它的核心思想是“职责分配(Responsibility Assignment)”。GRASP提出了几个基本原则,用来解决面向对象设计的一些问题。 Craig Larman在《Applying UML and Patterns》一书中提出了GRASP设计模式的概念。作者称其为设计模式,其实,更好的理解应该为设计原则。因为,与GoF等设计模式不同的是,GoF等设计模式是针对特定问题而 阅读详情
通用职责分配软件模式(GRASP)侧重于基本的通用设计过程,是针对FURPS+需求模型中的Functional(功能性)的重要的设计原则。 GoF设计模式更注重FURPS+需求模型中的质量需求的设计。 可以在GoF设计模式中找到GRASP的影子。


个人的一点小经验:
1、解决接口变化的外部服务问题时使用“适配器模式<-工厂模式(创建适配器)<-Singleton模式(使全局可见)”.
2、解决变化的算法及策略问题时(客户定制业务规则)使用“策略模式(将不同算法定义为实现同一接口的独立类)<-工厂模式(创建策略对象—)<-Singleton模式(可选)”,并可以加入组合模式来解决策略的冲突。
3、使用观察者模式降低表示层与业务层的耦合。


模式名称描述(问题/解决方案)
信息专家模式问题:对象设计和职责分配的一般原则是什么?

解决方案:将职责分配给拥有履行一个职责所必需信息的类--即信息专家。(也就是将职责分配给一个类,这个类必须拥有履行这个职责所需要的信息。)
创建者模式问题:谁应该负责产生类的实例(对应于GoF设计模式系列里的“工厂模式”)

解决方案:如果符合下面的一个或多个条件,则将创建类A实例的职责分配给类B.

.类B聚合类A的对象。
.类B包含类A的对象。
.类B记录类A对象的实例。
.类B密切使用类A的对象。
.类B初始化数据并在创建类A的实例时传递给类A(类B是创建类A实例的一个专家)。

在以上情况下,类B是类A对象的创建者。
控制器模式问题:谁处理一个系统事件?

解决方案:当类代表下列一种情况时,为它分配处理系统事件消息的职责。
.代表整个系统、设备或子系统(外观控制器)。
.代表系统事件发生的用例场景(用例或回话控制器)。
低耦合问题:如何支持低依赖性以及增加重用性?

解决方案:分配职责时使(不必要的)耦合保持为最低。
高内聚问题:如何让复杂性可管理?

解决方案:分配职责时使内聚保持为最高。
多态模式问题:当行为随类型变化而变化时谁来负责处理这些变化?

解决方案:当类型变化导致另一个行为或导致行为变化时,应用多态操作将行为的职责分配到引起行为变化的类型。
纯虚构模式问题:当不想破坏高内聚和低耦合的设计原则时,谁来负责处理这些变化?

解决方案:将一组高内聚的职责分配给一个虚构的或处理方便的“行为”类,它并不是问题域中的概念,而是虚构的事务,以达到支持高内聚、低耦合和重用的目的。
中介模式问题:如何分配职责以避免直接耦合?

解决方案:分配职责给中间对象以协调组件或服务之间的操作,使得它们不直接耦合。
受保护变化模式问题:如何分配职责给对象、子系统和系统,使得这些元素中的变化或不稳定的点不会对其他元素产生不利影响?

解决方案:找出预计有变化或不稳定的元素,为其创建稳定的“接口”而分配职责。
设计模式学习之GRASP通用职责分配软件模式 通用职责分配软件模式GRASP(General Responsibility Assignment Software Patterns)是面向对象设计中的基本设计模式.。GRASP描述了有关对象设计和职责分配的最基本的指导原则,表的了镭射机中的职责分配的基本原则。        通用职责分配软件模式分别包括5个基本的模式和4个扩展的模式。        5个基本的模式:        信息专 阅读详情

相关推荐

GRASP10[1].3.0培训教程(公开).pdf

GRSP培训软件,十分珍贵,有例子,有基础介绍,非常实用,是天线仿真的必备软件之一

软件工程笔记:通用职责分配模式(grasp)

通用职责分配模式(grasp) — 笔记整理自 北京理工大学 计算机学院 什么是GRASP? General Responsibility Assignment Software Patterns(通用职责分配软件模式) GRASP包括4个基本模式和5个扩展模式,描述了对象设计和职责分配的基本原则 职责是一个类的契约或义务 “做”型职责是通过类的方法来实现的 “知道”型职责是通过类内部封装的属性以及类间关系来 体现 GRASP是如何设计一个面向对象系统的基础 GRASP的9个模式 专家 :应该将职责分

Wang的专栏 1769

AI Pika 生成进击的巨人动漫分镜案例

AI Pika 生成进击的巨人动漫分镜案例 Pika 是一个使用AI生成和编辑视频的平台。

独立开发,substack顶级编辑 2574

通用职责分配软件模式(GRASP)介绍和个人理解

General responsibility assignment software patterns 简称GRASP 翻译是通用职责分配软件模式,不同于GOF的23中设计模式那么具体到场景和解决方案。它是通用概括讲解如何设计类和对象之间的关系。和如何给类和对象分配对应的职责。其实面向对象最难、最核心和最有争议的的点就是如何设计类和对象的职责,类和对象之间的怎么联系。 其中一共是9个设计原则,控

wx_vampire的专栏 2199

别再只跑memtester了!嵌入式Linux内存压力测试,这5个参数和场景你试过吗?

本文深入探讨了嵌入式Linux内存压力测试的高级技巧,重点解析了memtester工具的5个关键参数和实战场景。通过物理地址测试、迭代控制、内存分配策略等调优方法,帮助开发者有效检测内存稳定性问题,适用于长期运行设备、特定故障重现等复杂场景,提升嵌入式系统可靠性。

weixin_30838873的博客 424

信号处理领域的研究生看过来:手把手教你搞定ICASSP 2025论文投稿(附Latex模板与格式检查清单)

本文为信号处理领域研究生提供ICASSP 2025论文投稿的详细指南,涵盖Latex模板使用、格式检查清单及投稿流程。特别针对IEEE旗舰会议的严格要求和2025年可能出现的新变化,提供预判性建议和实战技巧,帮助作者高效完成论文投稿。

程涛 561

GRASP软件职责分配原则

http://tommwq.tech/blog/2020/11/05/189 GRASP是General Responsibility Assignment Software Pattern的缩写,是一组为软件对象分配职责的指导原则。GRASP包含9种模式,它们是: 创建者(Creator) 信息专家(Information Expert) 低耦合(Low Coupling) 高内聚(High Cohesion) 控制器(Controller) 多态(Polymorphism) 纯虚

tq1086的博客 868

BurpSuite+安卓模拟器双保险:避开真机抓包限制的完整配置指南

本文详细介绍了如何通过BurpSuite与安卓模拟器(如雷电、夜神)协同工作,绕过真机抓包限制的完整配置指南。从环境准备、网络拓扑配置到证书部署和流量分析,提供了一套高效的解决方案,帮助安全测试人员稳定捕获手机数据包,提升测试效率。

Apple的专栏 439

谈谈分析模型的那些事儿 之 职责驱动设计

前面讲了为什么我们要使用分析模型,现在我们看设计分析模型的基本原则。 分配职责和职责驱动设计 我们在开始分析模型的时候,首先要弄清楚一个非常重要的原则,就是以职责为中心。OO分析设计的核心原则之一,就是软件系统中的所有元素都必须具有高度相关的职责,也就是说,软件系统中所有的模块、包、对象类,都应当拥有一个清晰的职责,并且与它相关的所有元素(即模块中的所有包、包中的所有对象类、对象类中的所有属

:)每天进步一点点 1408

手把手教你为RV1126开发板点亮3寸MIPI屏(ST7701S驱动,含设备树配置避坑点)

本文详细介绍了RV1126开发板适配3寸MIPI屏幕(ST7701S驱动)的全流程,涵盖硬件设计、信号完整性保障、屏幕时序参数计算及设备树配置等关键步骤。特别针对MIPI差分信号布线、电压匹配和设备树配置中的常见问题提供了实用解决方案,帮助开发者高效完成屏幕适配工作。

weixin_42524703的博客 335

彻底解决Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource

Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource

renkai721的专栏 24万+

职责分配模式分析准备

问题:在面向对象的系统中是由多个对象组成的,这些对象必需能够向其它对象发送消息或操作,这就是对象的交互和职责分配。不过由于对象的交互和职责的分配没有固定的标准,所以它的设计质量就有很大的可变性,差的系统设计会导致系统和构件脆弱和难以维护,重用和扩展。为了使你的系统设计的完美,必需有一个设计原则用于建立交互图和职责的分配,这就是GRASP(General Responsibility Assignm

cwj007的专栏 2337

FLUENT Meshing Watertight Geometry工作流入门 - 9 生成体网格

总结一下我们学到的东西。讨论体积网格的重要性,并了解生成体积网格的不同方法。还了解体积网格质量的重要性,并学习如何改进它。

B_etter_Man的博客 1万+

软件开发必修课:你该知道的GRASP职责分配模式

简介:软件开发为什么需要职责驱动设计(RDD)?职责应该如何分配?如何结合架构模式在实际开发中实践落地?本文介绍一种通用的职责分配模式——GRASP,通过举例详解GRASP的几大原则,并分享两个实际运用的案例。软件在本质上是复杂的,软件本身的复杂性在于除了要解决问题域,还要解决非功能性需求和软件域特有问题:安全性、可用性、可维护性、可扩展性、性能、一致性、容错性、稳定性、可重用性、幂等、兼容等等,软件开发者的任务就是制造“简单”的假象。如何组织复杂的系统?把复杂的事物分解到不同的层次中,层次代表了不同级别的

阿里云开发者 4086

药物对接仿真软件:HADDOCK_(16).实践项目:抗体-抗原对接案例

定义分子结构文件。

kkchenjj的博客 580

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

GRASP通用职责软件分配模式

说明:这篇文章应该是我在网上看到的,但不记得出处了,所以无法指明出处,请见谅。 # GRASP(General Responsibility Assignment Software Pattern)是通用职责软件分配模式。  GRASP的核心是自己干自己能干的事,自己只干自己的 事,也就是职责的分配和实现高内聚。用来解决面向对象设计的一些问题。  GRASP提出了九大原则,下面笔者将对这

思考,收获! 1321

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

通用职责分配软件模式

  文/李智慧 相对于GoF设计模式,通用职责分配软件模式GRASP更像一种设计思想或原则。GRASP的9个模式企图解决的问题只有一个:怎样将建模(静态模型),也就是怎样设计我们的对象,一个系统应该有多少个对象,每个对象应该包括哪些功能,不应该包括哪些功能,对象之间应该建立怎样的关系。通用职责分配软件模式,顾名思义,一个对象应该实现哪些功能由其承担的职责决定,即职责驱动对象设计。 

lizhihui的专栏 1493

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

[设计原则1]GRASP 通用职责分配软件原则

设计原则-GRASP通用职责分配软件原则主要是解决那些功能职责放哪些类实现的问题,是讨论功能分配的问题,它介于分析和设计之间,是在类被识别之后,如何向类分配职责的的基本原则。当然在这个过程中也经常会产生新的类,或对已经识别的类做合并、抽象等。

u013150151的专栏 1375

GRASP模式学习心得

GRASP模式学习心得 文章目录GRASP模式学习心得本文分三个层次一、GRASP—“通用职责分配软件模式”二、九个模式的概念、提出的问题以及解决方案三、在实际编程中的应用# 系列文章目录参考文献 本文分三个层次 GRASP是学习使用设计模式的基础 一、GRASP—“通用职责分配软件模式” 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 1、概念 GRASP,全称为General Responsibility Assignment Software Patter

qq_45283185的博客 2122

grasp设计模式应用场景_GRASP设计模式

GRASP设计模式:概要GRASP是General Responsibility Assignment Softwarepatterns(通用职责分配软件模式)的简称,它的核心思想是“职责分配(ResponsibilityAssignment)”。GRASP提出了几个基本原则,用来解决面向对象设计的一些问题。Craig Larman氏在《Applying UML andPatterns》一书中提出...

weixin_39631951的博客 620

GRASP 、SOLID 与 GoF 设计模式

面向对象设计的原则有很多,在实际的设计过程中完全遵循所有的原则是不太切实际的,同时项目也是一个多目标系统不可能同时满足所有干系人的需求,始终是一个取舍平衡的过程。

zhujisoft的专栏 2万+

GRASP----(职责分配原则)

要学习设计模式,有些基础知识是我们必须要先知道的,设计模式是关于类和对象的一种高效、灵活的使用方式,也就是说,必须先有类和对象,才能有设计模式的用武之地,否则一切都是空谈,那么类和对象是从那冒出来的呢?这时就需要比23种设计模式更重要更经典的GRASP模式登场了。GRASP(General Responsibility Assignment Software Patterns),中文名称为“通用职责

JoJo小风 3万+

GRASP通用职责分配软件模式和常用设计原则

要学习设计模式,有些基础知识是我们必须要先知道的,设计模式是关于类和对象的一种高效、灵活的使用方式,也就是说,必须先有类和对象,才能有设计模式的用武之地,否则一切都是空谈...

642

GRASP模式

GRASP,全称为Geneal Repsibily Asgren Sotware Pattern即通用职责分配软件模式,它由Applying UML and Patterns (UML和模式应用)一书作者CraigLarman提出。与其将它称为设计模式,不如称为设计原则,因为它是站在面向对象设计的角度,告诉我们怎样设计问题空间中的类与分配它们的行为职责,以及明确类之间的相互关系等,而不像GoF模式一样是针对特定问题而提出的解决方案。因此GRASP站在一个更高的角度来看待面向对象软件的设计,它是GoF设计模式

weixin_45234773的博客 1468
上一篇: 搜索硬盘的程序
下一篇: 领域驱动设计--之"MainPage"(今天开始翻译)
wind7788
博客等级 码龄22年 4粉丝 29原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值