包的设计原则总结(五) - 稳定抽象原则(SAP)

Packages that are maximally stable should be maximally abstract. Instable packages should be concrete. The abstraction of a package should be in proportion to its stability.
最稳定的包应该是最抽象的包。不稳定的包应该是具体的包。包的抽象程度跟它的稳定性成正比。

换成另一个说法是:
Stable packages should be abstract packages.
稳定的包应该是抽象的包。

包的稳定抽象等价原则


我们在The Stable Dependencies Principle (SDP) - OO设计的稳定依赖原则 一文中谈到了包的稳定性:不容易改变的包应该具有更好的稳定性。

一个包的抽象程度越高,它的稳定性就越高。反之,它的稳定性就越低。一个稳定的包必须是抽象的,反之,不稳定的包必须是具体的。

稳定的包的构成


抽象类或接口通过子类继承扩展行为,这表示抽象类或接口比它们的子类更具有稳定性。总之,为了构成稳定的包,应该提高包内的抽象类或接口的比率;它们的子类可以放在另一个不稳定的包内,该包依赖上述稳定的包,从而遵循了稳定依赖原则(SDP)。

理想的体系结构应该是:


不稳定的(容易改变的)包处于上层
- 它们是具体的包实现
稳定的(不容易改变的)包处于下层
- 不容易改变,但容易扩展
- 接口比实现(具体的运行代码)在内在特性上更具有稳定性

图1:遵循稳定依赖原则(SDP)的理想的体系结构

小结

稳定抽象等价原则(SAP)为我们解决包之间的关系耦合问题。在设计包结构时,稳定的包应该是抽象的(由抽象类或接口构成),不稳定的包应该是具体的(由具体的实现类构成)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章