推薦這個blog:

Award


(ASP.NET 2010、2011、2012年)

其他資源

簡體中文blog

最新回應

[獨自murmur]Interface VS Abstract

前言

某一次與member在refactoring的過程中,一起討論interface與abstract的差異,當時舉了個例子,順便在這邊做個記錄,也歡迎前輩們給更貼切的例子或是建議。
 

Interface

如果電腦壞軌的話,我們需要執行備份的作業。
會有一個interface: 備份,裡面就是『存取』的method

看什麼情況發生時,就要執行備份這個interface的method。
而不管interface後面是哪一個東西實作。
 

Abstract

abstract 則可能是隨身碟裡面的flash memory,也是具備『存取』的功能。
但是得看『繼承』這個flash memory的『隨身碟』怎麼去『加工』。

各品牌隨身碟可以有自己的功能、特色、外表、品牌、價格,
但是他們都有『存取』的功能,可能也有flash memory中共同的屬性,例如『MemorySize』。
只是他們存取的功能,使用的演算法可能不一樣,記憶體容量大小也可能不同。
所以flash memory這個abstract class可以實作『備份』的這個interface。
不同廠牌的隨身碟則可能根據不同的演算法,去實作存取的method。
 

結論

這只是突然想到的一個例子,有時候自己也會很突然地在兩者之間轉不出來,
希望這個例子可以給對abstract與interface還很模糊的人,一些具體的sense。


點部落-In Joey

↑ Grab this Headline Animator


關連文章

[Tips]網頁上按 Enter 鍵,模擬 Tab 鍵效果

[獨自murmur]Spec上可以幫助developer瞭解、思考與設計的資訊

[AJAX.NET]使用UpdatePanel出現PageRequestManagerParserErrorException Error

[獨自murmur]測試人員建立問題單,該提供的資訊

回應

  • # re: [獨自murmur]Interface VS Abstract by 流浪小風

    我記得祭司之前有篇噗裡面,有針對Interface和abstract class做了一個講解,舉的例子讓人很有感覺呢!

    2010/7/2 下午 11:02 | 回覆

  • # re: [獨自murmur]Interface VS Abstract by 91

    to 流浪小風 :

    突然感覺例子其實還蠻像的,只是切入點完全不同。
    謝謝你的補充啦,讓兩個概念由基礎定義到延伸使用,以及從應用面思考該如何抽象設計,上下兼具了。

    2010/7/3 上午 12:12 | 回覆

  • # re: [獨自murmur]Interface VS Abstract by Phoenix

    Interface是abstract class的一種極端呈現,

    他們最大的差異在於,其定義中是否能夠包含實作。

    2010/7/3 上午 10:32 | 回覆

登入後使用進階評論

Please add 1 and 3 and type the answer here: