包的設計原則總結(五) - 穩定抽象原則(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)爲我們解決包之間的關係耦合問題。在設計包結構時,穩定的包應該是抽象的(由抽象類或接口構成),不穩定的包應該是具體的(由具體的實現類構成)。

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