一些面向對象的設計法則(2)

法則2:針對接口編程,而非(接口的)實現

[ Program To An Interface, Not An Implementation ]





  • 接口



    1.接口是一個對象在對其它的對象進行調用時所知道的方法集合。

    2.一個對象可以有多個接口(實際上,接口是對象所有方法的一個子集)

    3.類型是對象的一個特定的接口。

    4.不同的對象可以具有相同的類型,而且一個對象可以具有多個不同的類型。

    5.一個對象僅能通過其接口才會被其它對象所瞭解。

    6.某種意義上,接口是以一種非常侷限的方式,將"是一種…"表達爲"一種支持該接口的…"。

    7.接口是實現插件化(pluggability)的關鍵





  • 實現繼承和接口繼承



    1.實現繼承(類繼承):一個對象的實現是根據另一個對象的實現來定義的。

    2.接口繼承(子類型化):描述了一個對象可在什麼時候被用來替代另一個對象。

    3.C++的繼承機制既指類繼承,又指接口繼承。

    4.C++通過繼承純虛類來實現接口繼承。

    5.Java對接口繼承具有單獨的語言構造方式-Java接口。

    6.Java接口構造方式更加易於表達和實現那些專注於對象接口的設計。





  • 接口的好處



    1.優點

    a.Client不必知道其使用對象的具體所屬類。

    b.一個對象可以很容易地被(實現了相同接口的)的另一個對象所替換。

    c.對象間的連接不必硬綁定(hardwire)到一個具體類的對象上,因此增加了靈活性。

    e.鬆散藕合(loosens coupling)。

    f.增加了重用的可能性。

    e.提高了(對象)組合的機率,因爲被包含對象可以是任何實現了一個指定接口的類。

    2.缺點:

    a.設計的複雜性略有增加

    (譯者注:接口表示"…像…"(LikeA)的關係,繼承表示"…是…"(IsA)的關係,組合表示"…有…"(HasA)的關係。)





  • 接口實例








該方法是指其它的一些類可以進行交通工具的駕駛,而不必關心其實際上是(汽車,輪船,潛艇或是其它任何實現了IManeuverabre的對象)。

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