轉自Cnblogs.com
法則2:針對接口編程,而非(接口的)實現
[ Program To An Interface, Not An Implementation ]
接口
n???????? 接口是一個對象在對其它的對象進行調用時所知道的方法集合。
n???????? 一個對象可以有多個接口(實際上,接口是對象所有方法的一個子集)
n???????? 類型是對象的一個特定的接口。
n???????? 不同的對象可以具有相同的類型,而且一個對象可以具有多個不同的類型。
n???????? 一個對象僅能通過其接口才會被其它對象所了解。
n???????? 某種意義上,接口是以一種非常局限的方式,將“是一種…”表達為“一種支持該接口的…”。
n???????? 接口是實現插件化(pluggability)的關鍵
實現繼承和接口繼承
n???????? 實現繼承(類繼承):一個對象的實現是根據另一個對象的實現來定義的。
n???????? 接口繼承(子類型化):描述了一個對象可在什么時候被用來替代另一個對象。
n???????? C++的繼承機制既指類繼承,又指接口繼承。
n???????? C++通過繼承純虛類來實現接口繼承。
n???????? Java對接口繼承具有單獨的語言構造方式-Java接口。
n???????? Java接口構造方式更加易于表達和實現那些專注于對象接口的設計。
接口的好處
n???????? 優點:
F??????? Client不必知道其使用對象的具體所屬類。
F??????? 一個對象可以很容易地被(實現了相同接口的)的另一個對象所替換。
F??????? 對象間的連接不必硬綁定(hardwire)到一個具體類的對象上,因此增加了靈活性。
F??????? 松散藕合(loosens coupling)。
F??????? 增加了重用的可能性。
F??????? 提高了(對象)組合的機率,因為被包含對象可以是任何實現了一個指定接口的類。
n???????? 缺點:
F??????? 設計的復雜性略有增加
(譯者注:接口表示“…像…”(LikeA)的關系,繼承表示“…是…”(IsA)的關系,組合表示“…有…”(HasA)的關系。)
接口實例
該方法是指其它的一些類可以進行交通工具的駕駛,而不必關心其實際上是(汽車,輪船,潛艇或是其它任何實現了IManeuverabre的對象)。
posted on 2006-08-02 15:22
水煮三國 閱讀(434)
評論(0) 編輯 收藏 所屬分類:
J2SE