面向对象设计原则 (八)CRP(全部重用原则)

CRP(The Common Reuse Principle,全部重用原则)

一个包中的所有类应该是共同重用的。

 

 

The classes in a package are reused together. If you reuse one of the classes in a package, you reuse them all.

包的所有类被一起重用。如果你重用了其中的一个类,就重用全部。

换成另一个比较浅显易懂的说法:

Classes that aren’t reused together should not be grouped together

没有被一起重用的类不应该被组合在一起。

CRP原则帮助我们决定哪些类应该被放到同一个包里。

依赖一个包就是依赖这个包所包含的一切。当一个包发生了改变,并发布新的版本,使用这个包的所有用户都必须在新的包环境下验证他们的工作,即使被他们使用的部分没有发生任何改变。

因为如果包中包含有未被使用的类,即使用户不关心该类是否改变,但用户还是不得不升级该包并对原来的功能加以重新测试。

我们在Interface Segregation Principle (ISP) - OO设计的接口分隔原则 /sysdesign/doc/20071205214949530.html 一文中介绍了一种针对类的设计原则:

Clients should not be forced to depend upon interfaces that they do not use.不能强迫用户去依赖那些他们不使用的接口。

把这个概念应用到更广范围的包上,就是CRP的基本理念:不要把用户不使用的类一起组合进包里。

CRP与REP一样,都是从方便用户重用的角度去设计包,重用者是他们的受益者,CCP则让系统的维护者受益。CCP让包尽可能大(CCP原则加入功能相关的类),CRP则让包尽可能小(CRP原则剔除不使用的类)。它们的出发点不一样,但不相互冲突。

CRP保证了包的内部具有很高的聚合性。

你可能感兴趣的:(面向对象)