欢迎进入武汉轻洽网络技术有限公司官方网站!
服务热线:027-51831034,13971151027
   3年前 (2017-06-15)  营销辅助软件 |   抢沙发  25 
文章评分 0 次,平均分 0.0

1.GRASP (职责分配原则)
要学习设计模式,有些基础知识是我们必须要先知道的,设计模式是关于类和对象的一种高效、灵活的使用方式,也就是说,必须先有类和对象,才能有设计模式的用武之地,否则一切都是空谈,那么类和对象是从那冒出来的呢?这时就需要比23种设计模式更重要更经典的GRASP模式登场了,嘿嘿,原来这才是老大!
GRASP(General Responsibility Assignment Software Patterns),中文名称为“通用职责分配软件模式”,GRASP一共包括9种模式,它们描述了对象设计和职责分配的基本原则。也就是说,如何把现实世界的业务功能抽象成对象,如何决定一个系统有多少对象,每个对象都包括什么职责,GRASP模式给出了最基本的指导原则。初学者应该尽快掌握、理解这些原则,因为这是如何设计一个面向对象系统的基础。可以说,GRASP是学习使用设计模式的基础。

1.1. GRASP设计模式

说到设计模式,更为人所知的当然是GoF(GangofFour)的23种设计模式。与GoF的23种设计模式不同的是,GRASP设计模式描述的是在OO设计中为互相协作的类分配职责的原则或者建议,而GoF的设计模式则是在更高的层次上描述一个OO系统或者其局部系统的行为以及结构上的抽象。

1.2. 9个基本的OO设计原则或基本的设计构件。
这9个设计模式分别是:创建者(Creator)、信息专家(InformationExpert)、低耦合(LowCoupling)、控制器(Controller)、高内聚(HighCohesion)、多态性(Polymorphism)、纯虚构(PureFabrication)、间接性(Indirection)、防止变异(ProtectedVariations)。

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. 信息专家模式(Information Expert Pattern)

(1) 问题:给对象分配职责的通用原则是什么?
(2) 解决方案:将职责分配给拥有履行一个职责所必需信息的类,即信息专家。
(3) 分析:信息专家模式是面向对象设计的最基本原则。通俗点来讲,就是一个类只干该干的事情,不该干的事情不干。在系统设计时,需要将职责分配给具有实现这个职责所需要信息的类。信息专家模式对应于面向对象设计原则中的单一职责原则。

2. 创造者模式(Creator Pattern)

(1) 问题:谁应该负责产生类的实例?
(2) 解决方案:如果符合下面的一个或者多个条件,则可将创建类A实例的职责分配给类B:
·B包含A;
·B聚合A;
·B拥有初始化A的数据并在创建类A的实例时将数据传递给类A;
·B记录A的实例;
·B频繁使用A。
此时,我们称类B是类A对象的创建者。如果符合多个条件,类B聚合或者包含类A的条件优先。

(3) 分析:创建对象是面向对象系统中最普遍的活动之一,因此,确定一个分配创建对象的通用职责非常重要。如果职责分配合理,设计就能降低耦合,提高设计的清晰度、封装性和重用性。通常情况下,如果对象的创建过程不是很复杂,则根据上述原则,由使用对象的类来创建对象。但是如果创建过程非常复杂,而且可能需要重复使用对象实例或者需要从外部注入一个对象实例,此时,可以委托一个专门的工厂类来辅助创建对象。创建者模式与各种工厂模式(简单工厂模式、工厂方法模式和抽象工厂模式)相对应。

 

除特别注明外,本站所有文章均为轻洽网络原创,转载请注明出处来自https://www.qingqia.net/485.html

关于

发表评论

暂无评论

切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册

扫一扫二维码分享