UML中GRASP面向对象设计原则

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属性中的集合元素,在类方法中创建的对象。


你可能感兴趣的:(C/C++)