UML中GRASP面向对象设计原则

原创 2015年11月19日 20:40:44

GRASP原则(General Responsibility Assignment Software Patterns)基于职责分配的的面向对象设计原则,它是面向对象设计的基本原则。

主要包括9个原则,总结一下:

1.创建者谁负责创建类?在Java和C++中对应调用new或者对象构造函数。这个还比较容易理解,谁负责创建,则可以考虑将被创建者组合为创建者的一个属性(属性可见),或者创建者的某个函数中创建被创建者(局部可见)。

2.专家模式。谁应该对某个行为或者认知负责?谁拥有实现该行为所需要的必须信息,就讲该职责让谁负责。对应到代码中通常表现为某个行为方法需要定义在哪个类中。对于需要在类与类之间发送消息的方法,需要在发送方保留被发送方的指针或者引用。(对象可见性

3.控制器UI层和领域模型之间的模式应用。主要是为了保持UI层和业务逻辑层不相互污染。通常对应的创建一个代表系统的类或者一个虚构类用于UI层和领域层的消息交互。

4.高内聚尽量保持类能够只有单一的事情,只做自己份内的事,不包含过多的职责。表现为对象中的方法只是自己必须完成的工作,对于一些其他不太相关的工作可以委派给其它类,转而建立之间的关联即可。

5.低耦合。一个类尽可能少的和多个类发生关系,尽量少的依赖于其他类。表现在代码上为一个类较少的存在其他类的指针和引用。

6.多态。即多个类有一些共同的形态。在代码上表现为替换switch case之类的操作,建立多态关系,通常以抽象超类和接口的形式呈现,子类进行继承。

7.纯虚构。有时候在类与类之间通过构建一个实际并不存在的类用于信息的传递和交换以保持高内聚和低耦合的特点。

8.间接性。保持类和类之间的间接关系,减少直接关系,如适配器等。纯虚构就是因为间接性而产生的。

9.防止变异。不和陌生人说话。只向自己熟悉的对象发送消息,熟悉的对象包括this对象,方法的参数,this属性,this属性中的集合元素,在类方法中创建的对象。


GRASP设计模式及OO设计原则浅谈

转自:http://blog.sohu.com/s/Mzc2Nzc5MjU/239020230.html  非常好的深入型文章,收藏以供提升使用!也和大家一起分享,共勉! 面向对象(Obj...

GRASP模式

GRASP,全称为General Responsibility Assignment Software Pattern,即通用职责分配软件模式,它由《UML和模式应用》(Applying UML an...
  • LoveLion
  • LoveLion
  • 2012年09月16日 19:40
  • 10089

面向对象设计原则:不要STUPID,坚持GRASP和SOLID

不要STUPID,坚持GRASP和SOLID 听过SOLID编码吗?有人可能会说:这是描述设计原则的一个专业术语,由我们可爱的代码整洁之道传教者鲍勃(罗伯特C. 马丁)大叔提出,是一组用于指导我们如...

OOAD:面向对象的分析和设计

OOAD:面向对象的分析和设计 1.什么是面向对象 面向对象(Object-Orientation,简称OO)是一种系统建模技术/编程思想。 面向对象编程(Object-Orienta...
  • suwu150
  • suwu150
  • 2016年09月04日 01:38
  • 619

C++中的inline关键字

在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。 内联函数的引入有利有弊,使用时应当注意。...

JAVA设计模式之单例模式

概念:   java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。   单例模式有一下特点:   1、单例类只能有一个实例。   2、单例类必须自己自己创建自...

面向对象设计原则:不要STUPID,坚持GRASP和SOLID

不要STUPID,坚持GRASP和SOLID 听过SOLID编码吗?有人可能会说:这是描述设计原则的一个专业术语,由我们可爱的代码整洁之道传教者鲍勃(罗伯特C. 马丁)大叔提出,是一组用于指导我们如...

面向对象设计原则:不要STUPID,坚持GRASP和SOLID

听过SOLID编码吗?有人可能会说:这是描述设计原则的一个专业术语,由我们可爱的代码整洁之道传教者鲍勃(罗伯特C. 马丁)大叔提出,是一组用于指导我们如何写出“好代码”的原则。 在编程界充满了这样由...

面向对象设计原则--GRASP设计原则

GRASP概述 GRASP,全称General Responsibility Assignment Software Patterns,译为”通用职责分配软件原则“,包含以下原则和模式 控...
  • my98800
  • my98800
  • 2016年03月01日 09:51
  • 360

UML面向对象的设计原则

UML面向对象的设计原则 里氏替换原则 不满足LSP的方案 CS游戏中的枪械类图,士兵使用枪杀敌,具体用什么枪,调用的时候才知道。有一种玩具手枪,增加一个类ToyGun,射不出子弹,业务调用类出...
  • tingary
  • tingary
  • 2016年12月03日 16:05
  • 166
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UML中GRASP面向对象设计原则
举报原因:
原因补充:

(最多只允许输入30个字)