介面、抽象類別和面向介面的編程

來源:互聯網
上載者:User

 介面、抽象類別和面向介面的編程   介面本質

介面是對象和行為的做過抽象。

介面是一組規範,如果你擁有了這個介面,你就必須實現這些規範。從代碼上說就是你繼承了某個介面,你就必須實現這個介面的所有的方法。

  介面作用

介面的最大作用就是隔離變化。當然這是通過類的多態來實現的。

例如:我們定義一個介面IRun如下:

public interface IRun

{

   void  Run ();

}

那麼所有繼承這個介面的類必須實現Run方法。類Car實現這個借口,那它就必須實現Run方法,我們就可以通過IRun介面讓Car跑起來。現在Car是通過4個輪子來跑的,假如過了幾十年,Car都是磁懸浮了,這時,我們只需要修改Car的具體實現就行了,而使用Car的類,不需要任何修改,它仍然通過調用介面IRun的Run方法,就能讓車跑起來。

  再看現實中,你學會了開車,那麼幾乎所有的車你都會開,那是因為,這些車採用了相同的介面,即刹車,油門,方向盤等它們所在的位置,使用方法都是一樣的。  抽象類別

抽象類別和介面有很多相似點。單從功能來說,在很多情況下,我們可以互換它們來實現相同的功能。但從設計角度來看,它們還是不同的。比如:上面所說的IRun介面,它是一個行為的最高抽象,我們用抽象類別來代替介面就不好了。對於行為的最高抽象,用介面是最好的選擇。介面是制定的一組規則,而抽象類別是提高代碼的複用。對於它們的區別,還是來看個例子:

  抽象類別為車,介面為跑、裝人和裝貨。客車和貨車為繼承抽象類別車的類。車實現了跑,而客車和貨車從車那裡繼承了這個方法,實現對代碼的複用。

  面向介面的編程

   我們在設計系統時,先將系統分解成多個模組,在這時,我們不會關心模組具體實現,重點是模組之間的協作,這些協作我們通過介面來定義。我們在設計模組時,會將模組分解為多個對象,這時,我們不會關心對象的具體實現,重點是對象之間的協作,這些協作我們通過介面來定義。我們可以看出,設計系統時,重點是設計這些介面。這就是面向介面的編程。

  通過這種方式設計的系統,有很強的應對變化的能力。當你改變某個模組或者某個類時,只要不改變介面,其它的類和介面就不會受到影響。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.