OO思想中的一些总结与理解

多重继承与单一继承:

并不是多重继承就不好,单一继承就好。

造成这个误会的主要原因, C++ 中的多重继承方式,让可读性、可理解性变差。

其实,在现实世界中,多重继承的关系就是存在的,你可以是一个父亲,同时也可以是一个老师。

 

造成我们一直对单一继承有好感的原因,是因为 C# Java 都是单一继承。

但是,在 C# Java 中,只是使用了接口,来实现了“多重继承”的目标,并且提高了可读性。

 

但是一个语言,本身就支持多重继承,且可读性也很好,你是不是觉得不错?

没错,很多动态语言使用 Mixin 的方式来支持多重继承。

 

抽象、继承、多态

抽象和继承,不是为了对现实世界的事物进行分类,尽管看上去很像。

抽象和继承,是为了复用,为了 DRY

在代码中,很多本应该是一个类,被拆分成 2,3 多个类的情况很多。

 

为什么呢?因为 DRY

那按照什么来拆分类呢?

就是角色、职责、协作, DRY 原则,单一职责原则,封装变化原则

 

角色、职责、协作

在所有设计模式中, 90% 都是根据角色、职责、 DRY 得出来的。

当一个类中,职责过多,或者变化太多,就要抽离(抽象分离)出来

 

设计模式中,

所有 行为模式 ,都是由于某种行为类职责会常变化,或因为多种原因会使其某部分职责变化。

然后就 把该部分职责,抽离出来,并以该职责的名字命名这种模式。

例如:

命令模式,是把命令职责抽离出来

状态模式,是把状态变化职责抽离出来

构建模式,是把构建过程职责抽离出来

 

如果你仔细研究创建模式、行为模式、结构模式,

都是把相应的创建职责、行为职责、结构相关的职责抽离出来的。

猜你喜欢

转载自bandfor4.iteye.com/blog/1499717