[獨自murmur]Interface VS Abstract

  • 6833
  • 0

[獨自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。


blog 與課程更新內容,請前往新站位置:http://tdd.best/