1.包的设计原则 - 重用发布等价原则(REP)
介绍一下Robert C. Martin提出的面向对象的设计原则中的重用发布等价原则。参考文档(http://www.objectmentor.com/resources/articles/granularity.pdf )
重用发布等价原则:Release Reuse Equivalency Principle (REP)。重用的粒度就是发布的粒度( The granule of reuse is the granule of release. ),属于包设计的范畴。
重用 的定义:可以重用的代码是指bug的改修和功能增加的改修的原因,代码版本要升级的场合,利用这些代码的系统不需要看具体的代码,只要适当的时机替换掉静态的库就能够正常工作。
包是相关的类的集合,换言之一个类基本上都和其他的一些有依赖关系。因此 、发布的最小单位一般认为是一个包。
REP重用发布等价原则是针对包的设计来说的。
・重用的单位和发布的单位等价
・包里面包含的所有类都是可以重用的吗?可以重用的包中不能包含不可重用的类。因为不可重用的类参照了其他组件,包含这个类的这个包就变成不能重用了。
2. 包的设计原则 -- 共同重用原则
介绍一下RobertC.Martin提出的面向对象的设计原则 中的全再利用原则。参考文档(http://www.objectmentor.com/resources/articles/granularity.pdf )。
全再利用原则(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)。
面向对象的所有这些原则在实践中完全遵守是几乎不可能的,主要是没有那么时间和金钱让我们去仔细琢磨。不过我们了解认识了这些原则后,在设计的时候尽量使自己的产品分离性更高,效率好。易读,易扩展,易维护。
3. 包的设计原则 - 共同封闭原则(CCP)
介绍一下RobertC.Martin提出的面向对象的设计原则中的闭锁性共通原则。参考文档(http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf )。
闭锁性共通原则(CCP):The Common Closure Principle 。是为了解决包设计的凝集问题的。
包中的所有类对于同一类性质的变化应该是共通封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响 ( The classes in a package should be closed together against the same kinds of changes. a change that affects a package affects all the classes in that package. )。
还有就是因为同一类性质的变化而被修改的类应该放在同一个包内 (Classes that change together, belong together. )