面向对象编程基础(GRASP)

1.信息专家

我们设计对象(类)的时候,

如果某个类拥有完成某个职责所需要的所有信息,

那么这个职责就应该分配给这个类来实现。

这时,这个类就是相对于这个职责的信息专家。

信息专家模式对应于面向对象设计原则中的单一职责原则。

2.创造者

B包含A;

B聚合A;

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

B记录A的实例;

B频繁使用A。

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

3.低耦合(核心)

问题:

什么是耦合?

耦合是元素与其他元素的连接.感知及依赖程度的度量.例如父类与子类的(关系)

为什么要低耦合?

减少变化产生的影响

如何做到低耦合?

信息专家模式

4.控制器

领域对象,层与层之间,系统与系统之间进行交互的对象

5.高内聚

内聚是指职责内聚,一个类只要完成一种职责,不要写出big类!!!!

6.多态

这个无须解释

7.纯虚构

虚拟出一个代理类,和和GOF的这几种设计模式差不多(适配器,命令,策略,代理,外观,观察者)

许多纯虚构是因为间接性而产生的,间接性通常是为了低耦合,即在其它构建或服务之间加入中介以进行解耦

8.间接性

为了避免两个或多个领域对象之间直接耦合,可以为其构建或服务之间的媒介,以避免他们之间的直接耦合

大量的间接性中介都是纯虚构

9.防止变异(PV)

问题:如何设计对象.子系统.和系统,使其内部的变化或者不稳定不会对其他元素产生不良影响

方案,找出不稳定之处,抽象它,为它分配职责!

10.LSP(Liskov替换原则)

这个无须解释

11.不要和陌生人讲话

只应该给以下对象发送消息

12.开放-封闭原则(OCP)

对扩展开放,对影响封闭

模块应该同时(对扩展.可适应性)开放和(对影响客户的更改)封闭


你可能感兴趣的:(面向对象编程基础(GRASP))