熟悉GRASP原则,并撰写心得回答设计模式是怎样解决设计问题的?在实际编程中怎样选择设计模式?以及如何使用设计模式。

本文介绍了GRASP(通用职责分配软件模式)原则,包括信息专家、创造者、低耦合、高内聚、控制器、多态、纯虚构、中介和受保护变化等九个方面,强调了设计模式如何解决设计问题和如何在实际编程中选择与使用。设计模式是面向对象设计的基础,有助于降低耦合,提高内聚性,适应系统变化。在选择设计模式时,应关注问题的本质,灵活运用,以实现系统可扩展性和维护性。
摘要由CSDN通过智能技术生成

一、Grasp介绍

GRASP,全称为General Responsibility Assignment Software Pattern,即通用职责分配软件模式,它由《UML和模式应用》(Applying UML and Patterns)一书作者Craig Larman提出。与其将它们称之为设计模式,不如称之为设计原则,因为它是站在面向对象设计的角度,告诉我们怎样设计问题空间中的类与分配它们的行为职责,以及明确类之间的相互关系等,而不像GoF模式一样是针对特定问题而提出的解决方案。因此GRASP站在一个更高的角度来看待面向对象软件的设计,它是GoF设计模式的基础。GRASP是对象职责分配的基本原则,其核心思想是职责分配(Responsibility Assignment),用职责设计对象(Designing Objects with Responsibilities)。它包含如下9个基本特征或原则:

1、信息专家:将职责分配给拥有履行一个职责所必需信息的类,即信息专家。

信息专家模式是面向对象设计的最基本原则。通俗点来讲,就是一个类只干该干的事情,不该干的事情不干。在系统设计时,需要将职责分配给具有实现这个职责所需要信息的类。信息专家模式对应于面向对象设计原则中的单一职责原则。

例如:常见的网上商店里的购物车(ShopCar),需要让每种商品(SKU)只在购物车内出现一次,购买相同商品,只需要更新商品的数量即可。

针对这个问题需要权衡的是,比较商品是否相同的方法需要放到那里类里来实现呢?分析业务得知需要根据商品的编号(SKUID)来唯一区分商品,而商品编号是唯一存在于商品类里的,所以根据信息专家模式,应该把比较商品是否相同的方法放在商品类里。

2、创造者

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

B包含A;

B聚合A;

B拥有初始化A的数据并在创建类A的实例时将数据传递给类A;

B记录A的实例;

B频繁使用A。

此时,我们称类B是类A对象的创建者。如果符合多个条件,类B聚合或者包含类A的条件优先。

3、低耦合

耦合是评价一个系统中各个元素之间连接或依赖强弱关系的尺度,具有低耦合的元素不

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值