外掛程式式框架作為乙個高耦合低聚合的系統,它的功能定義與功能實現之間是分離的,這種策略是高耦合實現的保證。外掛程式式框架好像乙個功能聚集站,它對外界宣布,只要符合它發布的某種規範的元件(實現介面的類通常稱為元件)都可以加入到這個平台中,而這些元件到底是做什麼事情的,框架並不關心,當然,框架也提供了一些必要的資訊和幫助保證這些元件能夠正常實現它們的功能。
橋接模式是一種被認可的表示定義和與之關聯的實現的方式,它和工廠(factory)模式為所有的應用提供了基礎。使用橋接模式開發的元件具有為了乙個共同目標而多方協同工作除某些必須實現的介面外無需彼此互動的優點。
在具有多個邏輯層的程式設計中,各層之間的通訊大多通過介面實現,由於介面不會輕易改變,如果乙個層的**發生變化,它不會影響其它層的功能;只要實現介面的元件功能正確,那麼這個程式執行就更無問題。這種做法使得各層之間的影響降低到最低程度。
介面是是型別一般行為的定義和契約。例如交通工具都包含啟動、停車、加速和減速等方法,但作為交通工具的具體型別,不同車輛之間的操作是不一樣的。介面並不考慮它們各自採用什麼方式實現這些功能,但是,它們都必須有這些基本的功能。介面只負責定義而不考慮實現,我們也不能產生乙個介面的例項物件(instance)。
實現了介面的類或結構都必須實現介面中定義的每乙個方法,這些方法在設計上往往是相關的。
介面與抽象類非常相似,例如兩者都不能產生例項物件,都可以作為一種契約和定義使用。但介面和抽象類仍有本質的不同,這些不同包括:
抽象類可以包含某些實現**,但介面沒有任何實現部分;
抽象類可以包含欄位而介面沒有;
介面可以被結構(struct)繼承,但抽象類不行;
抽象類可以有建構函式和析構函式,而介面都沒有;
抽象類可以繼承自其它類和介面而介面僅僅能繼承自介面;
介面支援多繼承而抽象類僅僅支援單根繼承。
下面是抽象類和介面的對比例子:
public abstract class aclass {
abstract public void methoda (int a);
abstract public void methodb (int a);
abstract public void methodc (int a);
abstract public void methodd (int a);
public inte***ce iinte***ce {
void methoda (int a);
void methodb (int a);
void methodc (int a);
void methodd (int a);
即使不從橋接模式的觀點考慮,多種物件導向語言都引入了介面這種型別定義還有乙個重要原因:乙個類可以實現多個介面。在大部分物件導向語言中,多重繼承都是被禁止的,這是因為當編譯器需要找到虛方法的正確實現時,會出現不確定性。但是介面並沒有實現的部分,實現多個介面,並非意味著類(class)那樣的繼承,它也絕非是多重繼承機制的替代品。
我們常常將介面與抽象類混淆,事實上,兩者的表象過於一致。但介面用來定義兩個物件通訊的契約,抽象類用來封裝物件間公用的行為;抽象類應主要用於關係密切的物件,而介面最適合為不相關的類提供通用功能。二者設計起初的目標完全不同,但在實際應用中被太多的人誤解。這個原理在arcobjects庫中顯露無遺:不同型別的元件互相呼叫是通過介面,而同一型別的物件群,如color,則是通過抽象類組織在一起的,即介面是對外通訊的,抽象類是對內組織的。
介面的意義
介面的意義 外掛程式式框架作為乙個高聚合低耦合的系統,它的功能定義與功能實現之間是分離的,這種策略是高聚合實現的保證。外掛程式式框架好像乙個功能聚集站,它對外界宣布,只要符合它發布的某種規範的元件 實現介面的類通常稱為元件 都可以加入到這個平台中,而這些元件到底是做什麼事情的,框架並不關心,當然,框...
介面的意義
外掛程式式框架作為乙個高聚合低耦合的系統,它的功能定義與功能實現之間是分離的,這種策略是高聚合實現的保證。外掛程式式框架好像乙個功能聚集站,它對外界宣布,只要符合它發布的某種規範的元件 實現介面的類通常稱為元件 都可以加入到這個平台中,而這些元件到底是做什麼事情的,框架並不關心,當然,框架也提供了一...
簡單的例項理解介面的偉大意義
asp.net基礎知識 簡單的例項理解介面的偉大意義 yousuosi 2012 5 26 首先,我們必須明確,介面是乙個類。介面是乙個特殊的類,又是乙個特別有意義的類,不是因為它的特殊,而是因為它的意義,叫它介面更合適,但不能忘了,它仍是類。介面是乙個只有宣告,沒有實現的類。很多人糾結於介面只是乙...