[獨自murmur]Interface VS Abstract

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


或許您會對下列培訓課程感興趣:

  1. 2019/6/15(六)~2019/6/16(日):工程實踐與流程規範導入實務 201906 第一梯次(台北)
  2. 2019/7/27(六)~2019/7/28(日):演化式設計:測試驅動開發與持續重構 第六梯次(台北)
  3. 2019/8/16(五)~2019/8/18(日):【C#進階設計-從重構學會高易用性與高彈性API設計】第二梯次(台北)
  4. 2019/9/21(六)~2019/9/22(日):Clean Coder:DI 與 AOP 進階實戰 第二梯次(台北)
  5. 2019/10/19(六):【針對遺留代碼加入單元測試的藝術】第七梯次(台北)
  6. 2019/10/20(日):【極速開發】第八梯次(台北)

想收到第一手公開培訓課程資訊,或想詢問企業內訓、顧問、教練、諮詢服務的,請洽 Facebook 粉絲專頁:91敏捷開發之路